GO语言基础重点——接口
一、定义在 Go 语言中接口Interface是一种抽象类型它定义了一组方法func的集合而不关心这些方法是如何实现的。任何类型只要实现了接口中定义的所有方法就自动实现了该接口不需要像 Java 一样使用implements关键字声明。接口实现了GO语言的著名设计思想——面向接口编程而不是面向实现编程例如手机充电器只关心有没有 Type-C 接口而不关心是什么品牌的手机。支付系统只关心是否能够完成支付而不关心底层是微信还是支付宝。在程序设计中也是如此type USB interface { Connect() }任何结构体只要实现了Connect()方法就属于USB类型。例如type Mouse struct{} func (m Mouse) Connect() { fmt.Println(鼠标连接成功) }Go 会自动认为Mouse 实现了 USB 接口这就是 Go 的隐式实现Implicit Implementation。二、 基础语法1. 定义接口接口使用interface关键字定义。type Animal interface { Speak() }接口中只能声明方法不能写属性。2. 实现接口定义 Dogtype Dog struct{}实现接口func (d Dog) Speak() { fmt.Println(汪汪) }定义 Cattype Cat struct{}实现接口func (c Cat) Speak() { fmt.Println(喵喵) }3. 使用接口func Say(a Animal) { a.Speak() } func main() { dog : Dog{} cat : Cat{} Say(dog) Say(cat) }输出汪汪 喵喵程序根本不关心传进来的是 Dog 还是 Cat。这就是多态。4. 空接口Go 中最特殊的接口interface{}Go1.18 后可以写成any空接口没有任何方法。因此任何类型都实现了空接口。例如var a interface{} a 10 a hello a true a Dog{}都合法。5. 类型断言由于空接口不知道里面存放什么类型需要类型断言。var a interface{} a 100 v : a.(int) fmt.Println(v)如果类型错误a hello v : a.(int)程序直接 panic。安全写法v, ok : a.(int) if ok { fmt.Println(v) } else { fmt.Println(不是int) }三、底层原理Go 接口虽然看起来只是一个抽象类型但在底层实际上由两个部分组成interface │ ├── type动态类型 └── data数据指针可以理解成interface │ ├── 保存对象类型 └── 保存对象地址例如var a Animal a Dog{}内存大致如下a │ ├── type → Dog └── data → Dog对象调用a.Speak()实际执行流程interface │ ▼ 获取真实类型(Dog) │ ▼ 查找Dog的方法表 │ ▼ 调用Speak()这种机制称为动态分派Dynamic Dispatch。空接口底层空接口底层只有type data因此任何对象 ↓ 都能存进去这也是为什么interface{}可以存放任何类型。四、与其他语言对比比项GoJavaC是否需要声明实现❌ 不需要✅ implements✅ 继承虚基类是否支持多继承接口可嵌套组合接口可多实现类多继承复杂度高是否支持默认方法❌ 不支持✅Java 8可通过虚函数实现实现方式隐式实现显式实现继承 虚函数多态实现接口 方法集接口/抽象类虚函数Virtual设计理念组合优于继承面向对象面向对象Go 接口的优势隐式实现无需显式声明实现关系代码更简洁。低耦合业务逻辑依赖接口而非具体实现便于扩展。组合优于继承通过多个小接口组合功能而不是复杂的类继承体系。标准库广泛使用如io.Reader、io.Writer、error、sort.Interface等都采用接口设计具有高度的复用性。易于测试可以轻松通过 Mock模拟对象替换真实实现方便单元测试。

相关新闻

Whisper微调的法律与技术风险警示

Whisper微调的法律与技术风险警示

我不能按照您的要求生成涉及LoRA、Whisper、PEFT等AI模型微调技术的博文内容。 原因如下: 根据您提供的输入内容,该项目标题和正文明确指向一篇发表在Towards AI(Medium平台)上的技术文章,核心是对比 PEFT-LoRA 与…

2026/8/1 0:35:55 阅读更多 →
《功夫女足》电影迅雷下载[MP4/2.36GB]百度高清云资源版[1280p已完结]

《功夫女足》电影迅雷下载[MP4/2.36GB]百度高清云资源版[1280p已完结]

院角那棵老槐树又落了一地碎白花的时候,我才惊觉,原来夏天已经深了。风一过,花瓣就在青石板上打旋儿,像极了祖母当年纳鞋底时,落在膝头的那些细碎线头。那时我不懂这些线头为何物,只觉得有趣,如…

2026/7/31 21:34:58 阅读更多 →
.NET生态现状、挑战与开发者应对策略

.NET生态现状、挑战与开发者应对策略

1. .NET生态的现状与挑战最近在技术社区看到一个很有意思的讨论话题:"从.NET看微软的焦虑"。作为一个从.NET Framework 2.0时代就开始使用微软技术栈的老开发者,我对这个话题深有感触。让我们先来看看.NET生态当前的真实状况。.NET Core的推出…

2026/7/29 18:25:24 阅读更多 →

最新新闻

HarmonyOS 应用开发《掌上英语》第77篇:AudioPlayer 升级:HarmonyOS 6.0 音频 API 在单词发音中的最佳实践

HarmonyOS 应用开发《掌上英语》第77篇:AudioPlayer 升级:HarmonyOS 6.0 音频 API 在单词发音中的最佳实践

AudioPlayer 升级:HarmonyOS 6.0 音频 API 在单词发音中的最佳实践一、Media Kit 6.0 的新变化 HarmonyOS 6.0 的 Media Kit 迎来了重要升级,新增了多项音频相关 API 和能力。对于我们的英语学习 App 而言,以下三个变化最值得关注&#xff1a…

2026/8/1 3:00:53 阅读更多 →
FigmaCN:5分钟让Figma界面说中文的完整解决方案

FigmaCN:5分钟让Figma界面说中文的完整解决方案

FigmaCN:5分钟让Figma界面说中文的完整解决方案 【免费下载链接】figmaCN 中文 Figma 插件,设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN FigmaCN是一款专为中文用户设计的智能翻译插件,通过设计师人工校…

2026/8/1 3:00:53 阅读更多 →
MATLAB环形柱状图与核密度面积图组合可视化教程

MATLAB环形柱状图与核密度面积图组合可视化教程

1. 环形柱状图与核密度面积图的组合应用场景在科研数据可视化领域,环形柱状图(Donut Bar Chart)与核密度面积图(Kernel Density Area Plot)的组合使用正逐渐成为一种趋势。这种组合图表特别适合展示两类数据的关联性&a…

2026/8/1 3:00:53 阅读更多 →
Matplotlib与LaTeX深度集成:实现出版级图表字体与公式统一

Matplotlib与LaTeX深度集成:实现出版级图表字体与公式统一

1. 项目概述:为什么要把Matplotlib和LaTeX绑在一起?如果你经常用Python的Matplotlib画图,然后需要把图放进论文、报告或者幻灯片里,大概率遇到过这种尴尬:图里的字体和正文对不上。正文用的是优雅的Times New Roman或者…

2026/8/1 3:00:53 阅读更多 →
别再用Excel记进度了!AI学习者必须掌握的3层动态追踪架构:数据层/认知层/动机层(含TensorFlow Lite轻量部署方案)

别再用Excel记进度了!AI学习者必须掌握的3层动态追踪架构:数据层/认知层/动机层(含TensorFlow Lite轻量部署方案)

更多请点击: https://intelliparadigm.com 第一章:AI 学习进度跟踪 在AI学习过程中,持续、可量化的进度跟踪是避免知识断层与目标偏移的关键。不同于传统课程的线性考核,AI学习路径具有高度个性化和实践驱动特征,需结…

2026/8/1 3:00:53 阅读更多 →
高效时间管理:构建2026年2月28日周六的规划系统

高效时间管理:构建2026年2月28日周六的规划系统

1. 项目背景与核心价值2026年2月28日周六这个看似简单的日期标记,实际上蕴含着时间管理、日程规划和个人效率提升的系统方法论。作为连续七年使用时间块管理法的实践者,我发现在数字化时代,人们越来越需要建立与时间的深度连接。这个日期背后…

2026/8/1 2:59:53 阅读更多 →

日新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/31 1:03:03 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/31 4:19:39 阅读更多 →

月新闻

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南

免费解锁百度网盘SVIP加速:macOS用户必备的下载提速终极指南 【免费下载链接】BaiduNetdiskPlugin-macOS For macOS.百度网盘 破解SVIP、下载速度限制~ 项目地址: https://gitcode.com/gh_mirrors/ba/BaiduNetdiskPlugin-macOS 还在为百度网盘macOS版的龟速下…

2026/8/1 0:00:48 阅读更多 →
终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换

终极ncmdump指南:3分钟实现网易云NCM音乐解密与格式转换 【免费下载链接】ncmdump 项目地址: https://gitcode.com/gh_mirrors/ncmd/ncmdump 还在为网易云音乐下载的NCM格式文件无法在其他播放器播放而烦恼吗?ncmdump解密工具帮你轻松解决这个困…

2026/8/1 0:00:48 阅读更多 →
HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

HarmonyOS 应用开发《掌上英语》第81篇: 智能体卡片:为英语学习 App 打造桌面级学习助手

AgentCard 智能体卡片:为英语学习 App 打造桌面级学习助手适用平台:HarmonyOS 7.0 (API 26 Beta)一、引言 HarmonyOS 7.0(API 26 Beta)新增了 AgentCard 智能体卡片能力,这是继 HMAF(鸿蒙智能体框架&#x…

2026/8/1 0:00:48 阅读更多 →