Estou tentando declarar constante no Go, mas está lançando um erro. Alguém poderia me ajudar com a sintaxe de declarar uma constante no Go?
Este é o meu código:
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",
}
Este é o erro
# command-line-arguments
./Roman_Numerals.go:9: syntax error: unexpected {
non-declaration statement outside function body
tempo de compilação na verdade. Por quê?var romanNumeralDict map[int]string = map[int]string{...}
nesse caso.:=
fora de uma função.Você pode criar constantes de várias maneiras diferentes:
Você também pode criar uma constante enum:
Você não pode criar constantes de mapas, matrizes e está escrito de forma eficaz :
fonte
Você pode emular um mapa com um fechamento:
Experimente no playground Go
fonte
map
(3) A função anônima retorna "uma função que aceita um int e retorna uma string" (4) A função retornada faz o int -> string mapeamento usando omap
(5) Execute a função anônima imediatamente e atribua a função retornada a uma variável. Essa variável pode ser usada como uma função e o efeito é como um mapa.E como sugerido acima por Siu Ching Pong -Asuka Kenji com a função que, na minha opinião, faz mais sentido e deixa você com a conveniência do tipo de mapa sem o wrapper de função:
Tente isso em play.golang.org.
fonte
Como mencionado acima, para definir um mapa como constante, não é possível. Mas você pode declarar uma variável global que é uma estrutura que contém um mapa.
A inicialização ficaria assim:
fonte
romanNumeralDict.m[1000] = "New value"