Go语言实现类似c++中的多态功能实例

 更新时间:2016年09月08日 16:20:41   投稿:daisy  
Go本身不具有多态的特性,不能够像Java、C++那样编写多态类、多态方法。但是,使用Go可以编写具有多态功能的类绑定的方法。下面来一起看看吧

前言

Go语言作为编程语言中的后起之秀,在博采众长的同时又不失个性,在注重运行效率的同时又重视开发效率,不失为一种好的开发语言。在go语言中,没有类的概念,但是仍然可以用struct+interface来实现类的功能,下面的这个简单的例子演示了如何用go来模拟c++中的多态的行为。

示例代码

package main
 
 
import "os"
import "fmt"
 
 
type Human interface {
  sayHello()
}
 
 
type Chinese struct {
  name string
}
 
 
type English struct {
  name string
}
 
 
func (c *Chinese) sayHello() {
  fmt.Println(c.name,"说:你好,世界")
}
 
 
func (e *English) sayHello() {
  fmt.Println(e.name,"says: hello,world")
}
 
 
func main() {
  fmt.Println(len(os.Args))
   
  c := Chinese{"汪星人"}
  e := English{"jorn"}
  m := map[int]Human{}
   
  m[0] = &c
  m[1] = &e
   
  for i:=0;i<2;i++ {
    m[i].sayHello()
  }
}

总结

从上面的例子来看,在go中实现类似C++中的多态可谓是非常的简单,只要实现相同的接口即可。

相关文章

  • 深入浅出go依赖注入工具Wire的使用

    深入浅出go依赖注入工具Wire的使用

    但随着项目规模的增长,组件之间的依赖关系变得复杂,手动管理可能会很繁琐,所以本文将深入探讨一个备受欢迎的 Go 语言依赖注入工具—— Wire,感兴趣的可以了解下
    2023-09-09
  • golang jwt鉴权的实现流程

    golang jwt鉴权的实现流程

    本文主要介绍了golang jwt鉴权的实现流程,包含生成JWT令牌、客户端存储和发送JWT令牌、服务端验证JWT令牌等,具有一定的参考价值,感兴趣的可以了解一下
    2025-02-02
  • Go数组与切片轻松掌握

    Go数组与切片轻松掌握

    在Java的核心库中,集合框架可谓鼎鼎大名:Array、List、Set等等,随便拎一个出来都值得开发者好好学习如何使用甚至是背后的设计源码。虽然Go语言没有如此丰富的容器类型,但也有一些基本的容器供开发者使用,接下来让我们认识一下这些容器类型吧
    2022-11-11
  • Golang语言中fs.ReadDir的全面指南

    Golang语言中fs.ReadDir的全面指南

    欢迎来到Golang语言中fs.ReadDir的全面指南!这个简短的引导将让你掌握如何高效地使用这个功能,一起来深入探索吧,保证你会有所收获!
    2023-12-12
  • Centos下搭建golang环境及vim高亮Go关键字设置的方法

    Centos下搭建golang环境及vim高亮Go关键字设置的方法

    这篇文章先给大家详细介绍了在Centos下搭建golang环境的步骤,大家按照下面的方法就可以自己搭建golang环境,搭建完成后又给大家介绍了vim高亮Go关键字设置的方法,文中通过示例代码介绍的很详细,有需要的朋友们可以参考借鉴,下面来一起看看吧。
    2016-11-11
  • go内存缓存BigCache实现BytesQueue源码解读

    go内存缓存BigCache实现BytesQueue源码解读

    这篇文章主要为大家介绍了go内存缓存BigCache实现BytesQueue源码解读,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • 基于Golang实现Excel表格的导入导出功能

    基于Golang实现Excel表格的导入导出功能

    最近项目开发中有涉及到Excel的导入与导出功能,特别是导出表格时需要特定的格式,所以本文给大家介绍了基于Golang实现Excel表格的导入导出功能,文中通过代码示例和图文介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • 用go实现反向代理的代码示例

    用go实现反向代理的代码示例

    当实现反向代理时,Go语言是一个强大而受欢迎的选择,Go具有出色的并发性和网络编程支持,使其成为构建高性能反向代理的理想工具,在本文中,我将介绍如何使用Go语言实现一个简单的反向代理服务器,并提供相应的源代码,需要的朋友可以参考下
    2023-06-06
  • Go 泛型和非泛型代码详解

    Go 泛型和非泛型代码详解

    Go 在 1.17 中支持泛型,但是默认未开启;1.18 中会正式支持泛型,下面文章内容小编将给大家讲解Go 语言中的泛型和非泛型并且附上代码详解,刚兴趣的小伙伴请参考下面文章的具体内容
    2021-10-10
  • Go程序性能优化及pprof使用方法详解

    Go程序性能优化及pprof使用方法详解

    这篇文章主要为大家详细介绍了Go程序性能优化及pprof的使用方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-11-11

最新评论