以下代码生成“prog.go:17: c.Test undefined(Child 类型没有字段或方法 Test)”。( http://play.golang.org/p/g3InujEX9W )package mainimport "fmt"type Base struct { X int}func (b Base) Test() int { return b.X}type Child Basefunc main() { c := Child{4} fmt.Println(c.Test())}我意识到Test是在技术上定义的Base,但是应该Child继承那个方法吗?
1 回答
翻翻过去那场雪
TA贡献2065条经验 获得超14个赞
在 go 中继承的方法是使用struct embedding
with anonymous struct members
。 这是对您的示例的改编。
在此处阅读结构嵌入和 go 的继承方法等
您遇到的行为是预期的,并且与golang 规范同步,该规范明确指出:
任意类型T的方法集由接收者类型为T的所有方法组成。对应指针类型*T的方法集是所有接收者为*T或T的方法的集合(即还包含T的方法集)。更多规则适用于包含匿名字段的结构,如结构类型部分所述。任何其他类型都有一个空的方法集。
- 1 回答
- 0 关注
- 188 浏览
添加回答
举报
0/150
提交
取消