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

Go interface

接口

接口类型是由 type 和 interface 关键字定义的一组方法集合

type MyInterface interface { M1(int) error M2(io.Writer, ...string) }

接口的零值是nil,一个未初始化的接口变量的值为nil,且不包含任何动态类型或值

Go 语言要求接口类型声明中的方法必须是具名的,并且方法名字在这个接口类型的方法集合中是唯一

方法集合为空的接口类型就被称为空接口类型

如果一个变量的类型是空接口类型,由于空接口类型的方法集合为空,这就意味着任何类型都实现了空接口的方法集合,所以我们可以将任何类型的值作为右值

packagemainimport"fmt"funcmain(){variinterface{}=15// oki="hello, golang"// okfmt.Println(i)//hello, golangtypeTstruct{}vart T i=t// okfmt.Println(i)// {}i=&t// okfmt.Println(i)//&{}}

对于空接口类型变量,只有_type 和 data所指数据内容一致的情况下,两个空接口类型变量之间才能划等号

packagemainimport"fmt"// 接口Speacker定义了Speak() string方法typeSpeackerinterface{Speak()string}// Dog和Cat结构体通过实现Speak()方法自动实现了Speacker接口typeDogstruct{}typeCatstruct{}// Dog的Speak方法使用指针接收者func(d*Dog)Speak()string{return"wang"}// Cat的Speak方法使用指针接收者func(d*Cat)Speak()string{return"miao"}// 但值类型 Dog 和 Cat 不拥有这些方法/* 函数接受 Speacker 接口类型的参数 可以传入任何实现了 Speacker 接口的值 体现了多态性:同一个函数可以处理不同类型的对象 */funcMakeAnimalSpeak(a Speacker){fmt.Println(a.Speak())}funcmain(){dog:=&Dog{}cat:=&Cat{}// 接口赋值varspeaker Speacker speaker=cat// 实际指向的是*Cat// 如果speaker指向 *Cat,Go会自动调用 (*Cat).Speak()fmt.Println(speaker.Speak())MakeAnimalSpeak(speaker)vars2 Speacker s2=dog fmt.Println(s2.Speak())MakeAnimalSpeak(s2)// s2 指向 *Dog 对象// speaker 指向 *Cat 对象// 都是 Speacker 接口类型,但指向不同的具体类型// 接口比较会检查类型和值是否都相同//(*Dog vs *Cat),所以输出:falsefmt.Println(s2==speaker)}
http://www.jsqmd.com/news/463174/

相关文章:

  • OMAP L138 McASP实战指南:从入门到FPGA通讯精通(非音频场景)
  • 全网都在刷Open Claw?别傻了!这才是让GPT-5.4和Sora2真正听话的技术底层!
  • 电力系统Simulink仿真探索:从MMC到MPPT的多元控制实现
  • 常用API整理(按功能)
  • 探秘全自动锂电池 Degas 机的程序世界
  • MultiThread
  • 探索 3.6kw 光伏储能逆变器:基于 STM32F103 的奇妙之旅
  • 使用Papanastasiou正交模型求解宾汉姆浆液单一裂隙注浆扩散范围
  • 用易语言纯系统API实现全局鼠标键盘钩子监听
  • 留学机构优选:本科TOP10 平台口碑与实力并存 - 博客湾
  • IEEE13节点系统Simulink仿真:从基础到拓展
  • Ubuntu怎么弄得像windows:Dash to Panel
  • 2026聚焦可行性研究报告咨询,口碑好的公司评测推荐,bp商业计划书/市场调研分析报告,可行性研究报告编写机构排行 - 品牌推荐师
  • 基于模型预测算法的含储能微网双层能量管理模型:MATLAB实现与探索
  • 2026年珍珠棉袋子厂家排行榜:陕西五大优质珠光膜信封袋/气泡膜/气泡袋厂商推荐 - 深度智识库
  • MATLAB代码实现的电动汽车有序充电策略
  • 测试外包坟场:东欧AI标注厂暴雷——软件测试行业的警示与突围
  • 2026年3月最新武汉税务合规优质服务机构推荐榜 - 资讯焦点
  • carsim,simulink联合仿真,自动驾驶基于mpc自定义期望速度跟踪控制
  • 【论文阅读】Line-Mod算法
  • 2026年 关风机厂家推荐排行榜:尼龙关风机/不锈钢关风机,匠心工艺与高效密封性能深度解析 - 品牌企业推荐师(官方)
  • 科技服务机构如何优化服务流程?
  • 十进制取反
  • CIA-net:用于多模态MRI卵巢肿瘤分割的跨模态交互与聚合网络/文献速递-大模型与图像分割在医疗影像中应用
  • 2026年全国电缆回收优质服务商推荐榜:低压电缆回收/光伏电缆回收/光伏线回收/变压器回收/工程剩余电缆回收/选择指南 - 优质品牌商家
  • matlab遗传算法GA求解CVRP带容量限制(有能力约束)的车辆路径问题(三),采用锦标赛选...
  • 计算机毕业设计springboot高校社团管理系统 基于SpringBoot的大学生社团活动与成员协作管理平台 SpringBoot框架下的高校学生组织数字化运营与互动服务系统
  • 基于遗传算法与模拟退火算法的疫情封控区域生活物资配送优化模型及MATLAB代码
  • 2026年3月最新武汉财税服务优质机构综合推荐 - 资讯焦点
  • 产业园区如何提升科技服务能力?