Go面向对象
Go语言 类型与接口关系
## 一个类型实现多个接口 ```go // Sayer 接口 type Sayer interface { say() } // Mover 接口 type Mover interface { move() } type dog struct { name string } // 实现Sayer接口 func (d dog) say() { fmt.Printf("%s会叫汪汪汪\n", d.name) } // 实现Mover接口 func (d dog) move() { fmt.Printf("%s会动\n", d.name) } ``` >dog既可以实现Sayer接口,也可以实现Mover接口。 ## 多个类型实现同一接口 ```go // Mover 接口 type Mover interface { move() } type dog struct { name string } type car struct { brand string } // dog类型实现Mover接口 func (d dog) move() { fmt.Printf("%s会跑\n", d.name) } // car类型实现Mover接口 func (c car) move() { fmt.Printf("%s速度70迈\n", c.brand) } ``` 一个接口的方法,不一定需要由一个类型完全实现,接口的方法可以通过在类型中嵌入其他类型或者结构体来实现 ```go // WashingMachine 洗衣机 type WashingMachine interface { wash() dry() } // 甩干器 type dryer struct{} // 实现WashingMachine接口的dry()方法 func (d dryer) dry() { fmt.Println("甩一甩") } // 海尔洗衣机 type haier struct { dryer //嵌入甩干器 } // 实现WashingMachine接口的wash()方法 func (h haier) wash() { fmt.Println("洗刷刷") } ``` ## 接口嵌套 接口与接口间可以通过嵌套创造出新的接口。嵌套得到的接口的使用与普通接口一样。 ```go // Sayer 接口 type Sayer interface { say() } // Mover 接口 type Mover interface { move() } // 接口嵌套 type animal interface { Sayer Mover } type cat struct { name string } func (c cat) say() { fmt.Println("喵喵喵") } func (c cat) move() { fmt.Println("猫会动") } func main() { var x animal x = cat{name: "花花"} x.move() x.say() } ```
顶部
收展
底部
[TOC]
目录
Go语言 接口
Go语言 类型与接口关系
Go语言 空接口
相关推荐
Go基础
Go数据类型
Go函数
Go并发编程
Go数据操作