Go 学习杂谈 - Interface

上一遍文章中只简述Golang中的struct,这里想再总结一下另外一个所有高级语言中都有的特性:接口interface

说到其它的高级语言,在表述某个类实现了某个接口时,往往需要显式地声明,比如Java通过implement关键字。但在Go中,一切变得简单。

首先,先定义一个接口类型,如下:

package intPkg
type Bird interface {
   Fly()
   Chirp()
}

这里我们定义了一个接口类: Bird,同时定义了两个接口方法: Fly() and Chirp()。
接下来如果我们要实现这个Bird类的接口,只需要实现这个接口的所以方法,也就是上面的Fly,Chirp方法,不需要任何显式的声明关键字告诉编译器你实现了这个接口:

package intImpPkg

type MyBird struct {
    Name string
    Color string
}

func (b *MyBird) Fly() {
    // flying
}

func (b *myBird) Chrip() {
   // Chriping
}

这样就实现了Bird这个接口。需要注意的是:

  • 实现类与接口类可以定义在不同的包中
  • 实现类必需实现所有的接口方法
    接下来我们就可以将实现类赋值给接口类型的变量了:
func NewBird() (bird Bird) {
     bird = &MyBird{"百灵鸟“, "black"}
     return 
}
...
bird := NewBird()
bird.Fly()
Bird.Chrip()
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值