💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
### 多态的表现 ~~~ //定义接口类型 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 ~~~