如何实现golang语言的多态


本文摘自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()  { // 实现抽象方法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语言的多态的详细内容,更多文章请关注木庄网络博客!!

相关阅读 >>

golang如何创建map

golang如何接收前端的参数

如何使用go优雅地撰写单元测试

golang 快速排序与 php 快速排序

关于go get超时的问题

go语言都用什么框架

rabbitmq实现延迟队列

go语言学习9-结构体类型

golang环形单项链表

go fmt

更多相关阅读请进入《golang》频道 >>




打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...