当前位置: 首页 > news >正文

Go语言 类多态

 本篇文章主要为Go语言 类相关多态内容定义及示例。

 

目录

多态

定义接口

赋值并调用

多态

说明

总结


多态

Go语言的多态不需要继承,只要实现相同的接口即可。

定义接口

实现go多态,需要实现定义接口。

定义一个接口,类型是interface。

人类的武器发起攻击,不同的登记子弹效果不同。

示例如下:

package mainimport "fmt"// 实现go多态,需要实现定义接口。
// 人类的武器发起攻击,不同的登记子弹效果不同。// 定义一个接口,类型是interface。
type IAttack interface {// 接口函数可以有多个,但是只能有函数,而不能实现Attack()
}// 低等级
type HumanLowLevel struct {name  stringlevel int
}func (this *HumanLowLevel) Attack() {fmt.Println("我是:", this.name, " 等级:", this.level)
}

 

赋值并调用

定义一个包含Attack的接口变量。

对player赋值为lowLevel,接口需要使用指针类型来赋值。

示例如下:

func main() {// 定义一个包含Attack的接口变量var player IAttacklowLevel := HumanLowLevel{"Mike",1,}highLevel := HumanLowLevel{"John",10,}lowLevel.Attack()highLevel.Attack()// 对player赋值为lowLevel,接口需要使用指针类型来赋值player = &lowLevelplayer.Attack()player = &highLevelplayer.Attack()
}

值接收者和指针接收者,二者都可以调用方法。

因为 Go 语言编译器自动做了转换,

所以值类型接收者和指针类型接收者是等价的。

多态

定义一个多态的通用接口,传入不同的对象,调用同样的方法,实现不同的效果。

示例如下:

func DoAttack(a IAttack) {a.Attack()
}func main() {// 定义一个包含Attack的接口变量var player IAttacklowLevel := HumanLowLevel{"Mike",1,}highLevel := HumanLowLevel{"John",10,}lowLevel.Attack()highLevel.Attack()// 对player赋值为lowLevel,接口需要使用指针类型来赋值player = &lowLevelplayer.Attack()player = &highLevelplayer.Attack()fmt.Println("多态......")DoAttack(&lowLevel)DoAttack(&highLevel)
}

 

说明

1.定义一个接口,里面设计好需要的接口,可以有多个

2.任何实现了这个接口的类型,都可以赋值给这个接口,从而实现多态

3.多个类之间不需要有继承关系

4.如果interface中定义了多个接口,那么实际的类必须全部实现接口函数,才可以赋值

总结

本篇文章主要为Go语言 类相关多态内容定义及示例。


http://www.mrgr.cn/news/800.html

相关文章:

  • 【Spring Boot - 注解】@ResponseBody 注解:处理 JSON 响应
  • Selenium + Python 自动化测试12(unittest组织更多用例)
  • 【学习笔记】多元线性回归模型 —— Matlab
  • 算法题-链表反转
  • 在kotlin compose中打开浏览器以浏览网页的几种方法
  • 多线程执行的3种场景示例代码
  • 如何在桌面同时展示多个窗口
  • 『大模型笔记』从零开始构建AI智能体!
  • 网络协议 十一 ARP,RARP,icmp,websocket,webservice,HTTPDNS,FTP,邮件相关的协议, SMTP,POP,IMAP
  • 基于微信小程序的高校校园信息整合平台的设计与实现
  • TypeError: Cannot read properties of undefined (reading ‘scrollIntoView‘)(已解决)
  • YOLOv8跑通POSE分类--姿态检测coco8-pos数据集
  • android 12.0SystemUI 状态栏下拉快捷添加截图快捷开关
  • 06_Linux中如何让程序重启后自动启动
  • 力扣--两数之和
  • PHP获取和操作配置文件php.ini的几个函数介绍
  • 一文带你深度了解“模糊控制器”的实现原理及C语言实现代码
  • 白骑士的C#教学实战项目篇 4.3 Web开发
  • 高可用集群keepalived的应用以及部署
  • 隧道定位导航技术主要依赖于哪些原理或技术