简单地说 Interface是一组Method的组合,可以通过Interface来定义对象的一组行为。
如果某个对象实现了某个接口的所有方法,就表示它实现了该借口,无需显式地在该类型上添加接口说明。Interface是一个方法的集合,它里面没有其他类型变量,而且Method只用定义原型 不用实现
实现一个动物的接口:
package main import "fmt" // 定义一个 Animal接口 type Animal interface { Eat() Talk() Run() } // Dog 实现了Animal的所有方法,就可以说Dog实现了Animal这个接口 type Dog struct { name string } func (d *Dog) Eat() { fmt.Printf("%s is Eating...\n", d.name) } func (d *Dog) Talk() { fmt.Printf("%s is Talking...\n", d.name) } func (d *Dog) Run() { fmt.Printf("%s is Running...\n", d.name) } func main() { var dog = &Dog{ name: "WangCai", } var a Animal a = dog a.Run() a.Eat() a.Talk() }