关于interface的描述我就不写了,这里写一点自己的理解… 话不多说直接上代码!
接口的简单使用 - 使用interface定义方法,等待其他类型实现 package main import "fmt" type DoSomeThing interface { eat() work() } type cat struct { name string age int } //如果一个类型实现了这个接口的所有方法,他就可以被赋值给这个接口 func (c *cat) eat(){ fmt.Println("eat ing....") } func (c *cat) work(){ fmt.Println("work ing.....") } func looklook(do DoSomeThing) { fmt.Printf("Interface 类型 %T , 值: %v\n", do, do) } func main(){ var do DoSomeThing //定义一个接口变量 tom := &cat{ name: "tomcat", age: 18, } //接口可以接收任何实现了这个接口的类型 do = tom looklook(do) //查看接口数据 //使用这个接口调用实现了自己的,数据类型所绑定的方法 do.eat() }对上述代码总结一下:
接口可以用来定义一个或者多个方法,等待其他类型去实现;如果一个类型实现了接口的所有方法,那么这个类型就实现了这个接口;接口可以接收任何实现了这个接口的类型,这个时候调用这个接口的方法,等于是调用了实现接口的类型的方法,就是说 接口的方法具体干了什么事,取决于实现接口的类型在实现这个方法的时候干的事;猫调用 “吃” 这个方法用于吃鱼和老鼠,狗调用 “吃” 这个方法用于吃骨头和狗粮;