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

时间:2015-03-27 12:24:17

标签: go

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

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

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

所以我必须在"two",之后添加昏迷或删除一个新行,并在编译器的最后一个值之后有}

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

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

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

go version go1.4.2 darwin/amd64 Mac OSX 10.9.5

2 个答案:

答案 0 :(得分:37)

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

Semicolon insertion rules

  

如果行的最终标记为

,则分号会自动插入非空行末尾的标记流中      
      
  • 整数,浮点,虚数,符文或字符串文字
  •   

所以这个:

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

实际上是:

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

哪个是无效的Go。

答案 1 :(得分:13)

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

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

事实上,你也可以用PHP,javascript和许多其他语言来做同样的事情。