
如何实现golang语言的多态?
C++里面有多态是其三大特性之一,那么golang里面的多态我们该怎么实现?
golang里面有一个接口类型interface,任何类型只要实现了接口类型,都可以赋值,如果接口类型是空,那么所有的类型都实现了它。因为是空嘛。
golang里面的多态就是用接口类型实现的,即定义一个接口类型,里面声明一些要实现的功能,注意,只要声明,不要实现,
立即学习“go语言免费学习笔记(深入)”;
1、数据调用该功能使界面与程序分离实施变得更加容易,美工无需任何编程基础即可完成数据调用操作。2、交互设计该功能可以方便的为栏目提供个性化性息功能及交互功能,为产品栏目添加产品颜色尺寸等属性或简单的留言和订单功能无需另外开发模块。3、静态生成触发式静态生成。4、友好URL设置网页路径变得更加友好5、多语言设计1)UTF8国际编码; 2)理论上可以承担一个任意多语言的网站版本。6、缓存机制减轻服务器
例如:type People interface {
// 只声明
GetAge() int
GetName() string
}然后你就可以定义你的结构体去实现里面声明的函数,你的结构体对象,就可以赋值到该接口类型了。
写了一个测试程序:
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() { // 实现抽象方法1
fmt.Printf("Man[%s, %d] sayhi\n", this.name, this.age)
}
func (this *Monster) sayhi() { // 实现抽象方法1
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] sayhiMonster[妖怪, 1000] sayhi
相关推荐:Golang教程









