的主要区别是如何必须初始化PersonInfo/PersonInfo2初始化之外Person对象。由于PersonInfo2是匿名结构类型的数组,我们对PersonInfo2初始化之外的这种类型一无所知。
因此,他们都可以初始化这样的:
m := PersonInfo{{1}, {2}}
n := PersonInfo2{{1},{2}}
但是,如果我们想追加匿名结构类型的元素,我们必须指定完整的类型:
append(n, struct { ID int `json:"id"` }{3})
fmt.Printf("%+v\n%+v", m, n)
[{ID:1} {ID:2}]
[{ID:1} {ID:2}]
但是他们不会是深深的平等,因为PersonInfo是一个Person类型的数组,PersonInfo2是一个匿名结构类型的数组。所以如下:
if !reflect.DeepEqual(m,n) {
print("Not Equal")
}
将打印“不等”。
Here是一个自己看看的链接。
当附加到PersonInfo2时,我们必须为每个要添加的值重复匿名结构类型,最好将PersonInfo作为Person类型的数组使用。