您的位置:首页 > 编程语言 > Go语言

Go语言嵌入问题续

2017-05-09 12:16 113 查看
上次思考了嵌入类的问题,做了进一步的探索,有如下发现

当嵌入类的时候,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的话,问题就可以解决
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: