go语言多态
多态是同一个行为具有多个不同表现形式或形态的能力。
比如动物都会叫,但是不同种类的动物叫的声音不一样。
Go 语言并没有设计诸如虚函数、纯虚函数、继承、多重继承等概念,但它通过接口却非常优雅地支持了面向对象的特性。
多态是一种运行期的行为,它有以下几个特点:
1、一种类型具有多种类型的能力
2、允许不同的对象对同一消息做出灵活的反应
3、以一种通用的方式对待个使用的对象
4、非动态语言必须通过继承和接口的方式来实现
通过接口实现多态
type Animal interface {
Say() string
}
// dog
type Dog struct {
}
func (d Dog) Say() string {
// 汪汪
return "汪"
}
// cat
type Cat struct {
}
func (c Cat) Say() string {
// 喵喵
return "喵"
}
package main
import "fmt"
func main() {
animals := []Animal{Dog{}, Cat{}}
for _, animal := range animals {
fmt.Println(animal.Say())
}
}
参考资料
[1] 如何用 interface 实现多态
[2] 4.2 接口