news 2026/5/1 20:53:46

Go进阶之尽量定义小接口

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Go进阶之尽量定义小接口

接口越大.抽象程度越低.

1.Go推荐定义小接口:

接口就是将对象的行为进行抽象形成的契约.契约有繁有简.Go选择了去繁就简.

1).契约的自动遵守:

Go语言中接口与其实现者之间的关系是隐式的.无须像其他语言(如java)那样要求实

现者显示放置implents声明.实现者仅需实现接口方法集中的全部方法.就算是自动

遵守了契约.实现了接口.

2).小契约:

契约繁了便束缚束脚.降低灵活性.抑制表现力.Go表现在代码上便是尽量定义小接口.

2.Go标准库定义的接口:

源码位置:src/builtin/builtin.go

// The error built-in interface type is the conventional interface for // representing an error condition, with the nil value representing no error. type error interface { Error() string }

源码位置:src/io/io.go

type Reader interface { Read(p []byte) (n int, err error) }

源码位置:src/net/http/server.go

type ResponseWriter interface { Header() Header Write([]byte) (int, error) WriteHeader(statusCode int) }

可以看到上面的接口的方法数量为1~3个这种小接口的最佳实践已经被Go程序员和

各个社区项目广泛采用.

3.小接口的优势:

1).接口越小.抽象程度越高.被接纳度越高.

计算机程序本身就是对真实世界的抽象与在构建.抽象是对同类事物去除其个别的 次

要的方面.抽取其相同的 主要的方面的方法.不同的抽象程度会导致抽象出的概念对应

的事物集合不同.抽象程度越高.对应的空间集合越大.抽象程度越低(越具象.越接近事

物的真实面貌).对应的空间集合越小.

示例:

// 会飞的. type Flyable interface { Fly() } // 会游泳的. type Swimmable interface { Swim() } // 会飞会游泳的. type FlySwimmable interface { FlySwim() }

2).易于实现和测试.

3).契约职责单一.易于复用组合.

4.定义小接口遵循的点:

1).抽象出接口.

要设计和定义小接口.需要先有接口.在定义小接口之前.先需要理解问题域.然后创建

接口.

2).初期不要太在意接口的大小.

3).将大接口拆分为小接口.

我们有多少十年.又能舍得为十年付出多少呢.

如果大家喜欢我的分享的话,可以关注我的微信公众号

念何架构之路

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/24 21:36:41

激光设备制造商技术路线与应用服务多维比较分析

激光加工技术,是现代制造业核心工具之一,它精度高,速度快,适应材料广,已深度融入各工业领域,从精密微电子到重型机械。支撑这一技术广泛落地的,是一批设备制造商,他们在激光光源、光…

作者头像 李华
网站建设 2026/4/21 18:44:59

主流Web漏洞扫描器全解析:选型、实操与场景适配指南

在Web安全防护体系中,漏洞扫描器是不可或缺的"自动化检测利器"。某电商平台通过AWVS提前检测出支付接口SQL注入漏洞,避免了千万级数据泄露;某政务系统借助Burp Suite批量排查出XSS漏洞,顺利通过等保2.0测评。但实际工作…

作者头像 李华
网站建设 2026/5/1 20:14:23

借助AI的强大功能,学术研究的开题报告内容优化变得轻松且高效

工具对比速览 工具名称 核心功能 适用场景 效率评分 特色优势 AIBiYe 开题报告生成/降重 中文论文全流程 ★★★★★ 国内院校适配度高 AICheck 初稿生成/格式检查 快速产出框架 ★★★★☆ 结构化输出优秀 AskPaper 文献综述辅助 外文文献处理 ★★★★ 跨…

作者头像 李华
网站建设 2026/4/30 7:04:29

是德科技B2901B B2902C B2912B精密电源测量单元

是德科技/ AGILENT B2901B精密源/测量装置 是德科技B2901B精密源/测量单元是紧凑且具有成本效益的台式源/测量单元(smu ),能够以高分辨率和精度采集和测量电压和电流。它的源和测量分辨率最低精度为10 fA/100 nV,能够进行非常低的测量。用户友好的前面板GUI和4.3英寸…

作者头像 李华
网站建设 2026/4/24 23:42:36

基于51单片机的太阳光追踪系统设计

基于51单片机的太阳光追踪系统设计 一、设计背景与意义 太阳能利用是清洁能源发展的核心方向,传统固定式太阳能装置存在光能接收效率低、受光照角度影响大的问题,难以最大化利用太阳能资源。现有太阳光追踪系统多依赖高端控制器与复杂算法,成…

作者头像 李华
网站建设 2026/5/1 11:42:09

学术写作必备的9款顶尖查重工具性能分析与实用指南

核心工具对比速览 工具名称 核心功能 处理时间 适配检测平台 特色优势 aibiye 降AIGC查重 20分钟 知网/格子达/维普 保留学术术语的AI痕迹弱化 aicheck AIGC检测降重 即时 主流学术平台 实时检测反馈精准降重 askpaper 学术AI优化 15-30分钟 高校常用系统 专…

作者头像 李华