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

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.kler.cn/a/370747.html

相关文章:

  • Nmap之企业漏洞扫描(Enterprise Vulnerability Scanning for Nmap)
  • python中的RPA->playwright自动化录制脚本实战案例笔记
  • Vue2.0的安装
  • 【Flink系列】6. Flink中的时间和窗口
  • Dart语言的语法
  • 建造者模式(或者称为生成器(构建器)模式)
  • 雷池社区版compose配置文件解析-mgt
  • Spring Boot技术栈在论坛网站开发中的应用
  • WPF样式
  • dependencyManagement保持maven的多模块依赖版本一致
  • 【PnP】详细公式推导,使用DLT直接线性变换法求解相机外参
  • SpringBoot高级-底层原理
  • 详解Linux集群技术
  • 【ROS2】消息过滤、同步message_filters:最新同步LatestTime、精准同步ExactTime、近似同步ApproximateTime
  • Http 状态码 301 Permanent Rediret 302 Temporary Redirect、 重定向 重写
  • 想要音频里的人声,怎么把音频里的人声和音乐分开?
  • 【时间盒子】-【13.任务新建】创建一个新任务
  • 基于边缘计算的智能门禁系统架构设计分析
  • React03 组件 Props
  • 【C++初阶】模版入门看这一篇就够了
  • 华为Atlas显卡服务器查询计算卡型号
  • 如何通过接口版本控制实现向后兼容
  • Spring Boot:植物健康监测的智能专家
  • MATLAB中 exist函数用法
  • 【目标检测01】真实框、预测框、锚框和交并比IoU
  • CSS教程(一)- CSS介绍及使用方式