Golang bug或地图文字中的预期功能

Boj*_*anT 19 go

刚开始学习Go,我需要字符串字符串的映射,我按字面意思初始化.

mapa := map[string]string{
        "jedan":"one",
        "dva":"two"
       }
Run Code Online (Sandbox Code Playgroud)

但编译器抱怨 syntax error: need trailing comma before newline in composite literal

所以我不得不添加昏迷"two",或删除一个新行,并}在编译器的最后一个值后感到高兴

这是代码风格的预期行为吗?

编辑:要明确以下将编译和工作

mapa := map[string]string{
        "jedan":"one",
        "dva":"two"  }
Run Code Online (Sandbox Code Playgroud)

go version go1.4.2 darwin/amd64 Mac OSX 10.9.5

thw*_*hwd 43

Go有分号,但你没有看到它们,因为它们是由词法分析器自动插入的.

分号插入规则:

如果行的最终标记是,则在非空行的末尾自动将分号插入标记流

  • 整数,浮点,虚数,符文或字符串文字

所以这:

mapa := map[string]string{
    "jedan": "one",
    "dva":   "two"
}
Run Code Online (Sandbox Code Playgroud)

实际上是:

mapa := map[string]string{
    "jedan": "one",
    "dva":   "two";  // <- semicolon
}
Run Code Online (Sandbox Code Playgroud)

哪个是无效的Go.

  • 哇!这肯定违反了POLA-与golang(相对于C ++)的美丽,简单的语言有点瑕疵。 (2认同)

Elw*_*nar 14

是的.你应该选择添加的逗号.

以这种方式编辑地图/切片文字要简单得多:你可以复制贴纸,移动项目而不必担心最后一项不应该跟逗号这一事实.

实际上,您也可以使用PHP,JavaScript和许多其他语言执行相同的操作.

  • 好吧,你的问题是"我是否必须在行尾添加逗号或删除换行符".答案是肯定的. (7认同)