本文摘自php中文网,作者WJ,侵删。

如何实现golang语言的多态?
C++里面有多态是其三大特性之一,那么golang里面的多态我们该怎么实现?
golang里面有一个接口类型interface,任何类型只要实现了接口类型,都可以赋值,如果接口类型是空,那么所有的类型都实现了它。因为是空嘛。
golang里面的多态就是用接口类型实现的,即定义一个接口类型,里面声明一些要实现的功能,注意,只要声明,不要实现,
1 2 3 4 5 | 例如:type People interface {
GetAge() int
GetName() string
}
|
然后你就可以定义你的结构体去实现里面声明的函数,你的结构体对象,就可以赋值到该接口类型了。
写了一个测试程序:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | package main
import (
"fmt"
)
type Biology interface {
sayhi()
}
type Man struct {
name string
age int
}
type Monster struct {
name string
age int
}
func (this *Man) sayhi() {
fmt.Printf( "Man[%s, %d] sayhi\n" , this.name, this.age)
}
func (this *Monster) sayhi() {
fmt.Printf( "Monster[%s, %d] sayhi\n" , this.name, this.age)
}
func WhoSayHi(i Biology) {
i.sayhi()
}
func main() {
man := &Man{ "我是人" , 100}
monster := &Monster{ "妖怪" , 1000}
WhoSayHi(man)
WhoSayHi(monster)
}
|
运行结果:
Man[我是人, 100] sayhi
Monster[妖怪, 1000] sayhi
相关推荐:Golang教程
以上就是如何实现golang语言的多态的详细内容,更多文章请关注木庄网络博客!!
相关阅读 >>
记一次因为共享变量的犯错误
golang lua怎么用
手撸golang 行为型设计模式 访问者模式
golang令牌桶实现 [go-rate] 速率限制器
python中的数据类型
go - 环境安装
手撸golang 仿spring ioc/aop 之8 扫码3
手撸golang go与微服务 saga模式之6
go 函数选项模式
精心整理!9个 python 实用案例分享
更多相关阅读请进入《golang》频道 >>
老貘
一个与时俱进的Go编程知识库。
转载请注明出处:木庄网络博客 » 如何实现golang语言的多态