Go语言嵌入问题续

来源:互联网 发布:淘宝上专柜代购的衣服 编辑:程序博客网 时间:2024/05/17 03:26

上次思考了嵌入类的问题,做了进一步的探索,有如下发现

当嵌入类的时候,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的话,问题就可以解决

0 0
原创粉丝点击