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

go语言多态性(接口interface)的使用

前言

在Go语言中,接口类型(interface)完全可以作为一个函数的参数。这是Go语言多态性的一个重要体现,允许函数接受任何实现了接口中定义的方法的类型的实例。

一、接口(interface)定义

type Reader interface {Read() string
}

定义interface接口包含相应的方法。

二、定义结构体实现interface中的方法 

// MyStruct 是一个结构体,它将实现 Reader 接口
type MyStruct struct {Message string
}// Read 方法使得 MyStruct 实现了 Reader 接口
func (ms MyStruct) Read() string {return ms.Message
}

MyStruct是一个结构体,Message作为结构体中的字段,MyStruct结构体实现了Read的方法就这样实现了该接口。

三、定义公共函数接受接口(interface)类型的参数,并调用其方法

func processItem(reader Reader) {content := reader.Read()fmt.Println("Read content:", content)
}

四、主函数调用 

func main() {// 创建 MyStruct 的实例myInstance := MyStruct{Message: "Hello, World!"}// 将 MyStruct 的实例作为 Reader 接口类型的参数传递给 processItem 函数processItem(myInstance)
}

 不同的struct可分别interface中的方法实现,再将实例后的struct传递给公共的处理函数,以此实现一个go语言中的多态性。

http://www.lryc.cn/news/471838.html

相关文章:

  • 如何将markdown文件转换为pdf
  • 【python实操】python小程序之测试报告
  • 【Java基础】2、Java基础语法
  • MATLAB基础应用精讲-【数模应用】本量利分析(Cost-Volume-Profit Analysis)
  • 实习冲刺Day7
  • 《Python游戏编程入门》注-第4章1
  • 一些硬件知识【2024/10/29】
  • 利用弱监督学习在全切片病理图像中检测和分型基底细胞癌|文献速递-基于生成模型的数据增强与疾病监测应用
  • leetcode刷题笔记——15.三数之和
  • NLTK无法下载?
  • 采用非递归快排实现找出数组中的前k个高频元素(python)
  • Java题集练习4
  • sql进阶篇
  • 代码工艺:SQL 优化的细节
  • 天池蚂蚁AFAC大模型挑战赛-冠军方案(含代码)
  • [QUIC] Packets 和 Frames 概述
  • QT编辑框带行号
  • Kafka认证时Successfully logged in真的认证成功了?
  • 软考信息系统管理师,系统集成项目管理工程师,考哪一个合适?
  • AI学习指南自然语言处理篇-位置编码(Positional Encoding)
  • macOS 15 Sequoia dmg格式转用于虚拟机的iso格式教程
  • 【01初识】-初识 RabbitMQ
  • CTF-RE 从0到N:汇编层函数调用
  • 雷池社区版compose配置文件解析-mgt
  • 无人机避障——4D毫米波雷达Octomap从点云建立三维栅格地图
  • Python(数据结构2)
  • 深入解析HTTP与HTTPS的区别及实现原理
  • Java IO 模型
  • 安装双系统后ubuntu无法联网(没有wifi标识)网卡驱动为RTL8852BE
  • Sqoop的安装配置及使用