Dave Cheney, Go的领先专家之一,写道:“当使用复合字面量初始化变量时,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
}