Go语言编程(十三)之匿名组合

本文介绍了Go语言中如何通过组合实现类似继承的功能。通过具体的代码示例展示了如何定义一个基类并让派生类继承其方法,以及如何在派生类中重写基类的方法。

   确切的说,Go语言也提供了继承,但是采用了组合的文法,所以我们将其称为匿名组合:

type Base struct {
    Name string
}
func (base *Base) Foo() {...}
func (base *Base) Bar() {...}
type Foo struct {
    Base
    ...
}
func (foo *Foo) Bar() {
    foo.Base.Bar()
    ...
}
以上代码定义了一个Base类(实现了Foo()和Bar()两个成员方法),然后定义了一个Foo类,该类从Base类“继承”并改写了Bar()方法(该方法实现时先调用了基类的Bar()方法)。

在“派生类”Foo没有改写“基类”Base的成员方法时,相应的方法就被“继承”,例如上面的例子中,调用foo.Foo()和调用foo.Base.Foo()效果一致。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值