1
Go上的主要主题专家之一Dave Cheney写道:“当使用复合文字初始化变量时,Go要求复合文本的每一行结束用逗号,甚至是你声明的最后一行,这是semicolon rule的结果。“使用尾随逗号分析JSON数组和地图元素时的运行时错误
但是,当我试图将这个漂亮的规则应用于JSON文本时,解析器似乎并不赞同这种理念。在下面的代码中,删除逗号的作品。是否有修复这个,所以我可以看到一行改变,当我在我的差异添加元素?
package main
import (
"fmt"
"encoding/json"
)
type jsonobject struct {
Objects []ObjectType `json:"objects"`
}
type ObjectType struct {
Name string `json:"name"`
}
func main() {
bytes := []byte(`{ "objects":
[
{"name": "foo"}, // REMOVE THE COMMA TO MAKE THE CODE WORK!
]}`)
jsontype := &jsonobject{}
json.Unmarshal(bytes, &jsontype)
fmt.Printf("Results: %v\n", jsontype.Objects[0].Name) // panic: runtime error: index out of range
}