Próbuję zadeklarować stałą w Go, ale generuje błąd. Czy ktoś mógłby mi pomóc ze składnią deklarowania stałej w Go?
To jest mój kod:
const romanNumeralDict map[int]string = {
1000: "M",
900 : "CM",
500 : "D",
400 : "CD",
100 : "C",
90 : "XC",
50 : "L",
40 : "XL",
10 : "X",
9 : "IX",
5 : "V",
4 : "IV",
1 : "I",
}
To jest błąd
# command-line-arguments
./Roman_Numerals.go:9: syntax error: unexpected {
non-declaration statement outside function body
faktycznie rzuca w czasie kompilacji. Dlaczego?var romanNumeralDict map[int]string = map[int]string{...}
w takim przypadku.:=
poza funkcją.Możesz tworzyć stałe na wiele różnych sposobów:
Możesz również utworzyć stałą wyliczeniową:
Nie można tworzyć stałych map, tablic i jest napisane w efektywny sposób :
źródło
Możesz emulować mapę z zamknięciem:
Wypróbuj na placu zabaw Go
źródło
map
(3) Funkcja anonimowa zwraca „funkcję, która przyjmuje int i zwraca ciąg znaków” (4) Zwracana funkcja wykonuje int -> string mapowanie przy użyciumap
(5) Natychmiastowe wykonanie funkcji anonimowej i przypisanie zwróconej funkcji do zmiennej. Ta zmienna może być używana jak funkcja, a efekt jest jak mapa.I jak zasugerowała powyżej Siu Ching Pong -Asuka Kenji z funkcją, która moim zdaniem ma więcej sensu i pozostawia wygodę typu mapy bez oplotu funkcji wokół:
Spróbuj tego na play.golang.org.
źródło
Jak stwierdzono powyżej, zdefiniowanie mapy jako stałej nie jest możliwe. Ale możesz zadeklarować zmienną globalną, która jest strukturą zawierającą mapę.
Inicjalizacja wyglądałaby następująco:
źródło
romanNumeralDict.m[1000] = "New value"