如何实现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教程

更多相关文章

  1. 详细介绍XML中的文档与声明用法
  2. XML入门教程-属性声明代码示例
  3. XML文档类型声明
  4. 偷学Python完整版下载与声明
  5. PHP函数类型声明总结
  6. Spring Cloud OpenFeign:基于 Ribbon 和 Hystrix 的声明式服务调
  7. 在SQL中声明@变量返回错误
  8. 关于JavaScript变量声明及其初始化的问题

随机推荐

  1. 微软手握的 Android(安卓)专利一年可捞 4
  2. android 的现状和未来涉及的领域 以及开
  3. Android平台中进程与线程的基本知识
  4. Android面试经验一:
  5. Android手势源码浅析-----手势绘制(Gestu
  6. android orm映射框架 ormlite (类似于hib
  7. 【Android(安卓)Training - UserInfo】记
  8. android手机定位不准的问题
  9. Android休眠机制
  10. 关于启动Android模拟器时,运行时,会再弹出