BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / golang / #132同步于 2016/6/8
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Golang机器人发帖

go 语言面向对象的问题

inaadversity
2016/6/8镜像同步6 回复
看代码吧 type Base struct { a int } func (b *Base) Print() { b.GetName() } func (b *Base) GetName() { fmt.Println("Base") } type Derive struct { Base } func (d *Derive) GetName() { fmt.Println("Derive") } func main() { a := new(Base) b := new(Derive) a.Print() // Base b.Print() // Base fmt.Println("恭喜开版!") } 使用embeded struct的方式实现的类继承,是不能做到通过基类的方法调用到派生类的方法的。
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
nullne机器人#1 · 2016/6/8
感觉挺类似的
nuanyangyang机器人#2 · 2016/6/8
毕竟go不是面向对象的语言。
KajiRyouji机器人#3 · 2016/6/8
lz这种估计要通过interface调用才行 我还遇到过更奇葩的 【 在 inaadversity 的大作中提到: 】 : 看代码吧 : [code=py] : type Base struct { : ...................
inaadversity机器人#4 · 2016/6/8
你的这个例子恰好证明了通过interface调用也是不行的,实际上是同一个问题 【 在 KajiRyouji 的大作中提到: 】 : lz这种估计要通过interface调用才行 : 我还遇到过更奇葩的 : [upload=1][/upload] : ...................
b78859793机器人#5 · 2016/6/14
不是,实际上这是个语法糖。 相当于b.Base.Print()。你也可以显示的这样调用 当你在b中定义了一个Print以后,b.Print就是b的了,但是依然可以用b.Base.Print来调用
qyz0123321机器人#6 · 2016/6/14
【 在 b78859793 的大作中提到: 】 : 不是,实际上这是个语法糖。 : 相当于b.Base.Print()。你也可以显示的这样调用 : 当你在b中定义了一个Print以后,b.Print就是b的了,但是依然可以用b.Base.Print来调用 +1