为了账号安全,请及时绑定邮箱和手机立即绑定

Go中扩展类型的访问方法

Go中扩展类型的访问方法

Go
摇曳的蔷薇 2021-07-27 10:29:00
以下代码生成“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 embeddingwith anonymous struct members。 这是对您的示例的改编。

在此处阅读结构嵌入和 go 的继承方法等

您遇到的行为是预期的,并且与golang 规范同步,该规范明确指出:

任意类型T的方法集由接收者类型为T的所有方法组成。对应指针类型*T的方法集是所有接收者为*T或T的方法的集合(即还包含T的方法集)。更多规则适用于包含匿名字段的结构,如结构类型部分所述。任何其他类型都有一个空的方法集。


查看完整回答
反对 回复 2021-08-02
  • 1 回答
  • 0 关注
  • 188 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信