Go 语言提供了另外一种数据类型即接口,它把所有的具有共性的方法定义在一起,任何其他类型(包括结构体)只要实现了这些方法就是实现了这个接口。
package main
import (
"fmt"
)
// 定义Phone接口
type Phone interface {
call()
}
//定义NokiaPhone结构体
type NokiaPhone struct {
}
//Nokia类型实现call方法
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()
}
练习
定义geometry接口,包含【面积area()方法】与【周长perim()方法】,定义rect结构体,circle结构体。给两个结构体(类型)分别实现接口的两个方法,要求所实现的方法都要有返回值。在main函数中打印返回值,要求打印面积与周长时,需要定义measure方法,该方法接收接口类型geometry作为参数,打印出来该实例(参数),面积与周长。
注意:不同之处在于该接口内的方法有返回值,而例子中没有。
网友评论