Go语言嵌入问题续
2017-05-09 12:16
113 查看
上次思考了嵌入类的问题,做了进一步的探索,有如下发现
当嵌入类的时候,slice,map,需要在最外层的类进行初始化
比如
则,必须如下初始化
不能使用B的init方法,使用B的init方法会毫无作用,结果还是没初始化
同样,不能在B的方法中append,也是无效的
接着测试,我发现,如果嵌入的是*B的话,问题就可以解决
当嵌入类的时候,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的话,问题就可以解决
相关文章推荐
- Go语言的结构嵌入问题
- Go语言无法读取需要密码访问的PEM文件问题(failed to parse private key)
- GO语言 console 汉字 乱码 问题
- IAR C语言嵌入汇编问题
- Go语言tcp通信处理粘包问题框架.
- Go语言中Tcp协议粘包问题处理
- VC开发lua嵌入脚本语言相关问题
- 关于GDB调试go语言程序中出现 os.Args无法打印的问题
- Go语言黑魔法中的问题修正
- Go语言中Tcp协议粘包问题处理
- Mac $GOPATH not set Go语言环境变量的问题
- Go语言无法读取需要密码访问的PEM文件问题(failed to parse private key)
- Go语言的中文编码问题
- Go 语言中的方法,接口和嵌入类型
- Go语言 几个亟待解决的Go语言问题
- go语言之append 要注意的问题
- go语言类型转换问题,求解?
- IAR C语言嵌入汇编问题
- Go语言中嵌入C语言的方法
- go语言映射map的线程协程安全问题