如何实现golang语言的多态?
c++里面有多态是其三大特性之一,那么golang里面的多态我们该怎么实现?
golang里面有一个接口类型interface,任何类型只要实现了接口类型,都可以赋值,如果接口类型是空,那么所有的类型都实现了它。因为是空嘛。
golang里面的多态就是用接口类型实现的,即定义一个接口类型,里面声明一些要实现的功能,注意,只要声明,不要实现,
例如:type people interface {    // 只声明    getage() int     getname() string }
然后你就可以定义你的结构体去实现里面声明的函数,你的结构体对象,就可以赋值到该接口类型了。
写了一个测试程序:
package mainimport (    "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] sayhi
monster[妖怪, 1000] sayhi
相关推荐:golang教程
以上就是如何实现golang语言的多态的详细内容。
   
 
   