7.1 接口的定义
Go 语言提供了另外一种数据类型即接口,它把所有的具有共性的方法定义在一起,任何其他类型只要实现了这些方法就是实现了这个接口。
接口可以让我们将不同的类型绑定到一组公共的方法上,从而实现多态和灵活的设计。
Go 语言中的接口是隐式实现的,也就是说,如果一个类型实现了一个接口定义的所有方法,那么它就自动地实现了该接口。因此,我们可以通过将接口作为参数来实现对不同类型的调用,从而实现多态。
1 2 3 4 5
| type iface struct { tab *itab; data unsafe.Pointer }
|
7.2 接口使用实例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| package main
import ( "fmt" )
type Phone interface { call() }
type NokiaPhone struct { }
func (nokiaPhone NokiaPhone) call() { fmt.Println("I am Nokia, I can call you!") }
type IPhone struct { }
func (iPhone IPhone) call() { fmt.Println("I am iPhone, I can call you!") }
func main() { var phone Phone
phone = new(NokiaPhone) phone.call()
phone = new(IPhone) phone.call()
}
|