ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、视频、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
### 多态的表现 ~~~ //定义接口类型 type Hunmaner interface { sayhi() //方法,只有声明,没有实现,由别的类型(自定义类型)实现 } //定义Person类型 type Person struct { name string age int } //定义Animal类型 type Animal struct { name string weight int } //Person类型实现了此方法 func (p *Person) sayhi() { fmt.Println(p.name, p.age) } //Animal类型实现了此方法 func (a *Animal) sayhi() { fmt.Println(a.name, a.weight) } func whoSayhi(i Hunmaner) { i.sayhi() } func main() { p := &Person{"jack", 20} //是要实现了此接口方法的类型,那么这个类型的变量就可以给变量赋值 p.sayhi() a := &Animal{"鳄鱼", 120} a.sayhi() //调用同一接口,不同表现,多态 whoSayhi(p) whoSayhi(a) x := make([]Hunmaner, 2) x[0] = p x[1] = a for _, value := range x { value.sayhi() } } ~~~ ~~~ jack 20 鳄鱼 120 jack 20 鳄鱼 120 jack 20 鳄鱼 120 ~~~