Ошибка Голана или намеченная функция на картах
Просто начал изучать Go и мне нужна карта строковой строки, которую я инициализирую буквально.
mapa := map[string]string{
"jedan":"one",
"dva":"two"
}
Но компилятор жалуется syntax error: need trailing comma before newline in composite literal
Поэтому мне пришлось добавить coma после "two",
или удалить новую строку и иметь }
после того, как последнее значение для компилятора будет счастливым
Является ли это предполагаемым поведением стиля кода?
РЕДАКТИРОВАТЬ: быть понятным и скомпилировать и работать
mapa := map[string]string{
"jedan":"one",
"dva":"two" }
go version go1.4.2 darwin/amd64
Mac OSX 10.9.5
Ответы
Ответ 1
Go имеет точки с запятой, но вы их не видите, потому что они автоматически вставлены лексером.
Правила вставки точки с запятой:
точка с запятой автоматически вставляется в поток токенов в конце непустой строки, если окончательный токен линии
- целочисленный, плавающий, мнимый, рунический или строковый литерал
Итак, это:
mapa := map[string]string{
"jedan": "one",
"dva": "two"
}
на самом деле:
mapa := map[string]string{
"jedan": "one",
"dva": "two"; // <- semicolon
}
Что недействительно Go.
Ответ 2
Да, это так. И вы должны выбрать добавленную запятую.
Гораздо проще редактировать литералы карт/срезов таким образом: вы можете копировать-пастер, перемещать предметы, не беспокоясь о том, что за последним пунктом не следует запятая.
Фактически вы также можете сделать то же самое на PHP, javascript и многих других языках.