Go 语言惯用法实战指南
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @kunlungrowth/go-idioms。
技能介绍
解决什么问题
很多开发者从 Java 或 Python 迁移到 Go 时,写出来的代码总带着一股“翻译腔”:过度设计接口、用异常捕获的思维处理错误、或者在使用 goroutine 时遭遇泄漏、死锁和数据竞争。这个技能专门针对这些“非 Go 味”的代码,帮你摆脱语言习惯的包袱,写出符合 Go 社区审美和工程规范的代码。
技能如何工作
该技能通过结构化的工作流,对代码和架构进行深度审查与重构建议:
- 代码审查与反模式修正:识别诸如滥用
interface{}(Go 1.18+ 应使用any)、到处加锁(应优先用 channel 通信)、过度抽象等反模式,并提供改写对照。 - 错误处理与并发控制:规范 Go 1.13+ 的错误处理,包括哨兵错误和自定义错误类型;提供
errgroup、worker pool和pipeline等并发模式的完整示例,并强调context在 goroutine 生命周期管理中的作用。 - 接口设计与项目结构:遵循“接受接口,返回结构体”原则,指导接口在消费方定义。同时给出包拆分和命名(如使用单数名词)的工程建议。
适用边界与注意点
本技能聚焦于 Go 语言的核心惯用法和底层设计模式。它不适用于 Go 语法入门教学(建议先阅读 Tour of Go),也不会深入探讨特定 Web 框架(如 Gin、Echo 或 Fiber)的框架级最佳实践。它更适合作为你日常 Go 开发的“代码审查员”和架构顾问。
使用场景
- 从 Java/Python 迁移到 Go,审查现有代码中的翻译腔和反模式,输出改写建议。
- 开发 Go 服务时设计 goroutine/channel 并发流程,需要处理取消、超时和 worker pool。
- 设计项目包结构与接口边界时,不确定接口定义在消费方还是实现方,需要 Go 惯用法建议。
- 写 Go 库或服务时发现错误处理不清晰,需要按 Go 1.13+ 模式定义哨兵错误和自定义错误类型。
适合人员
- 从 Java/Python 转向 Go 的工程师,希望消除代码中的翻译腔,掌握 if err != nil 与并发模型。
- 负责 Go 服务后端开发的工程师,需要在请求链路中正确使用 context、errgroup 和 channel。
- 正在搭建 Go 项目架构的技术负责人,需要确定包拆分、接口摆放和最小化设计。
- 维护 Go 基础库或中间件的开发者,需要定义清晰的错误类型和并发安全行为。