刚开始学习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
答案 0 :(得分:37)
Go有分号,但你没有看到它们,因为它们是由词法分析器自动插入的。
如果行的最终标记为
,则分号会自动插入非空行末尾的标记流中
- 整数,浮点,虚数,符文或字符串文字
所以这个:
mapa := map[string]string{
"jedan": "one",
"dva": "two"
}
实际上是:
mapa := map[string]string{
"jedan": "one",
"dva": "two"; // <- semicolon
}
哪个是无效的Go。
答案 1 :(得分:13)
是的。你应该选择添加的逗号。
以这种方式编辑地图/切片文字要简单得多:你可以复制贴纸,移动项目而不必担心最后一项不应该跟逗号这一事实。
事实上,你也可以用PHP,javascript和许多其他语言来做同样的事情。