首页 > 其他 > 详细

Golang的嵌入和继承

时间:2015-10-15 18:52:42      阅读:160      评论:0      收藏:0      [点我收藏+]

    golang不支持继承,只支持嵌入和聚合(匿名字段称为嵌入,具名字段称为聚合)。golang通过嵌入,可以到达类似继承的效果,而且更为简洁。

    一个例子

type Base struct{
    b int
}
 
func (base*Base) setB(i int) {
    base.b = base.b + i
}
 
type Derivestruct {
    Base    // embed
    d   int // aggregation
}
 
func (derive*Derive) setD(i int) {
    derive.d = derive.d + i
}
 
func main() {
    var d Derive
    fmt.Println(d.b, d.d)
    d.setB(5)
    d.setD(10)
    fmt.Println(d.b, d.d)
}

运行结果

技术分享

自定义类型中嵌入一个类型后,嵌入类型中的任何方法都可以当作该自定义结构体自身的方法被调用。例如在Derive中嵌入Base,则Base的任何数据成员和方法都可以被当作Derive自身的数据成员和方法调用。从实际作用上看,golang中的嵌入类似与C++中的继承。


本文出自 “说话的白菜” 博客,谢绝转载!

Golang的嵌入和继承

原文:http://speakingbaicai.blog.51cto.com/5667326/1703245

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!