查看 this sandbox
当声明一个继承自不同结构的结构时:
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"}
关于Golang 结构继承没有按预期工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34644117/