上次思考了嵌入类的问题,做了进一步的探索,有如下发现
当嵌入类的时候,slice,map,需要在最外层的类进行初始化
比如
type A struct{
B
}
type B struct{
Names []string
}
func (b B)init(){
b.Names=make([]string,0,2)
}
则,必须如下初始化
func main(){
a:=A{B{Names:make([]string,0,2}}
...
}
不能使用B的init方法,使用B的init方法会毫无作用,结果还是没初始化
同样,不能在B的方法中append,也是无效的
接着测试,我发现,如果嵌入的是*B的话,问题就可以解决