//一个对象只要全部实现了接口中的方法,那么就实现了这个接口。换句话说,接口就是一个需要实现的方法列表。package mainimport "fmt"type Sayer interface { say()}type dog struct {}type cat struct {}func (d dog) say() { fmt.Println("汪汪汪")}func (c cat) say() { fmt.Println("喵喵喵")}func main() { var x Sayer a := cat{} b := dog{} x = a x.say() x = b x.say()}//输出://喵喵喵//汪汪汪
//一个类型实现多个接口package mainimport "fmt"type Sayer interface { say()}type Mover interface { move()}type dog struct { name string}func (d dog) say() { fmt.Printf("%s会叫汪汪汪\n",d.name)}func (d dog) move() { fmt.Printf("%s会动\n", d.name)}func main() { var x Sayer var y Mover var a = dog{name:"黑子"} x = a y = a x.say() y.move()}//输出://黑子会叫汪汪汪//黑子会动