go学习笔记-day19
Go 语言接口
Go 语言提供了另外一种数据类型即接口,它把所有的具有共性的方法定义在一起,任何其他类型只要实现了这些方法就是实现了这个接口。
package main import ( "fmt" ) type Phone interface { call() // 共性的方法 } type NokiaPhone struct { }
// 结构体NokiaPhone实现了 call 方法 func (nokiaPhone NokiaPhone) call() { fmt.Println("I am Nokia, I can call you!") } type IPhone struct { } // 结构体IPhone实现了 call 方法 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()
}
注意:对数据类型-接口的理解,把所有的具有共性的方法定义在一起,像是对一个方法的抽象。
定义一个动物接口: Animal (动物的共享方法可能是,会叫,会吃,会跑等)
定义一个结构体: Dog (小狗 会叫,会吃,会跑等)
再定义一个结构体: Cat (小猫 会叫, 会吃,会跑等)
现在,根据需求,小动物们的叫声,此时就可以把会叫这个方法抽象到 interface 里,而动物们的其他技能就可以保密
(interface 更多的是提供了对外的一种数据范围,保证信息的单一性)