Я пытаюсь объявить константу в Go, но выдает ошибку. Может ли кто-нибудь помочь мне с синтаксисом объявления константы в Go?
Это мой код:
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",
}
Это ошибка
# command-line-arguments
./Roman_Numerals.go:9: syntax error: unexpected {
non-declaration statement outside function body
самом деле это вызывает ошибку во время компиляции. Как придешь?var romanNumeralDict map[int]string = map[int]string{...}
в таком случае.:=
вне функции.Вы можете создавать константы разными способами:
Вы также можете создать константу перечисления:
Вы не можете создавать константы карт, массивов и это записано на эффективном ходу :
источник
Вы можете эмулировать карту с закрытием:
Попробуйте на игровой площадке Go
источник
map
(3) Анонимная функция возвращает «функцию, которая принимает int и возвращает строку» (4) Возвращенная функция выполняет int -> string отображение с помощьюmap
(5) Немедленное выполнение анонимной функции и присвоение возвращаемой функции переменной. Эта переменная может использоваться как функция, а эффект подобен карте.И, как было предложено выше Сиу Чинг Понг-Асука Кенджи с функцией, которая, на мой взгляд, имеет больше смысла и оставляет вам удобство типа карты без оболочки функции:
Попробуйте это на play.golang.org.
источник
Как указано выше, определить карту как постоянную невозможно. Но вы можете объявить глобальную переменную, которая представляет собой структуру, содержащую карту.
Инициализация будет выглядеть так:
источник
romanNumeralDict.m[1000] = "New value"