[Introduction]接口:空接口

288 阅读1分钟

接口

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 {} // 定义一个空接口

参考资料

理解Go interface的五个关键点