SuperAPI AI 工具集

go-best-practices

编程与开发

查看项目

更新于 10-15 18:37

技能介绍

用途:该技能提供一套 Go 语言最佳实践,采用类型优先(Type-First)开发方式,即先定义类型契约再实现代码,并强调让非法状态在编译期不可表示。

主要能力:

  1. 类型优先工作流:先定义数据结构(struct 与 interface),再定义函数签名(参数、返回值与错误条件),然后按类型实现,并在边界处校验输入。
  2. 领域建模:用自定义类型区分领域原语,如 type UserID string 与 type OrderID string,避免 ID 混用;用 iota 定义枚举并实现 String()。
  3. 接口契约:按需定义接口(如 Reader、UserRepository),遵循接受接口、返回结构体。
  4. 函数式选项:用 type ServerOption func(*Server) 与 WithPort、WithTimeout 等构造器提供默认值。
  5. 组合复用:通过结构体嵌入(如 Timestamps)实现组合。
  6. 模块结构:一个文件一个类型或关注点,文件过大或含无关类型时拆分,测试放在 _test.go 中。
  7. 函数式模式:无状态方法用值接收者,有变更用指针接收者;避免包级可变变量;返回新结构体而非修改输入。
  8. 错误处理:用 fmt.Errorf 加 %w 包装并保留错误链;未实现路径返回描述性错误;switch 覆盖所有分支并含返回错误的 default;外部调用传入带超时的 context.Context;panic 仅用于真正不可恢复的情况。
  9. 测试:为新逻辑添加或更新表驱动测试,覆盖空输入、nil 和边界情况。
  10. 日志:使用 log/slog 做结构化日志。
  11. 配置:启动时从环境变量加载配置,用 Config 结构体统一管理,校验必填项,缺失即退出;开发用合理默认值,生产密钥需显式提供。

使用方式:作为技能在读写 Go 代码时应用,按上述模式组织类型、接口、选项、错误与配置。资料未提供安装命令、具体调用接口或集成步骤。

适用场景:Go 项目的领域建模、API 设计、错误处理、配置管理与测试编写。

限制:资料未提供收费、价格、支持平台、版本要求或性能效果等信息。