上一遍文章中只简述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()