接口
interface是方法的集合。
interface是一种具有一组方法的类型(指针类型),interface作用常在于多态实现,任何实现接口所有方法的struct,称该struct实现了interface
(相关知识:鸭子类型duck typing/多态)
type in interface{
funcA()
funcB()
} // 定义一个接口
type obj struct {
id string
} // 声明一个结构体
func (o obj) funcA(){
log.Println("implement funcA")
}
func (o obj) funcB(){
log.Println("implement funcB")
} // 实现接口所有方法
func funcC(i in){
i.funcA()
i.funcB()
} // 函数funcC调用了接口两个方法 多态:i可以承接不同的类型,只要该类型实现了接口in
func main() {
o := obj{}
funcC(&o)
} // 调用函数funcC
空接口定义及应用
不带有任何方法的interface称作空接口,由接口定义可知,所有类型都实现了空接口,因此可以使用空接口来传递未知类型参数
in interface {} // 定义一个空接口