看看这个沙箱
声明从不同结构继承的结构时:
type Base struct { a string b string } type Something struct { Base c string }
然后调用指定继承值的值的函数会产生编译错误:
f(Something{ a: "letter a", c: "letter c", })
错误消息是:unknown Something field 'a' in struct literal
.
这对我来说似乎非常奇怪.这真的是预期的功能吗?
谢谢您的帮助!
Golang没有提供典型的继承概念.你在这里完成的是酝酿.
它不给外部结构提供内部结构的字段,而是允许外部结构访问内部结构的字段.
为了创建外部结构,Something
您需要提供包含内部结构的字段Base
在你的情况下:
Something{Base: Base{a: "letter a"}, c: "letter c"}
您需要显式创建这样的Base字段
f(Something{ Base: Base{a: "letter a"}, c: "letter c", })
Go没有继承,只是组合.