Подтвердить что ты не робот

Ошибка Голана или намеченная функция на картах

Просто начал изучать 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

4b9b3361

Ответ 1

Go имеет точки с запятой, но вы их не видите, потому что они автоматически вставлены лексером.

Правила вставки точки с запятой:

точка с запятой автоматически вставляется в поток токенов в конце непустой строки, если окончательный токен линии

  • целочисленный, плавающий, мнимый, рунический или строковый литерал

Итак, это:

mapa := map[string]string{
    "jedan": "one",
    "dva":   "two"
}

на самом деле:

mapa := map[string]string{
    "jedan": "one",
    "dva":   "two";  // <- semicolon
}

Что недействительно Go.

Ответ 2

Да, это так. И вы должны выбрать добавленную запятую.

Гораздо проще редактировать литералы карт/срезов таким образом: вы можете копировать-пастер, перемещать предметы, не беспокоясь о том, что за последним пунктом не следует запятая.

Фактически вы также можете сделать то же самое на PHP, javascript и многих других языках.