该技能用于编写和评审 Go 代码,核心原则是简洁优先:不预先抽象,先用标准库;模块 go.mod 中的 go 指令决定可用语言版本,而非本机工具链。
用途与范围:覆盖 Go 惯用法、命名、接口、泛型、接收者、context、声明、错误处理、并发、测试、项目结构、配置、类型与零值、标准库、文档、全局状态与代码导航,并给出从 Go 1.21 到 1.27 的特性下限(如 1.22 逐迭代循环变量、1.23 range-over-func、1.24 泛型类型别名与 os.Root、1.25 testing/synctest 与 sync.WaitGroup.Go、1.26 new(expr)、1.27 泛型方法等)。
主要约定:包名不叫 util/common 等;接口在消费处定义;先写具体实现再加类型参数;错误只处理一次,用 %w 包装、errors.Is/As 匹配;并发要求每个 goroutine 有退出条件,wg.Go 优于 Add/Done,channel 缓冲为 0 或 1;测试用表驱动、require/assert、synctest 处理时间、并发代码跑 -race,避免 time.Sleep;结构默认 internal/,二进制放 cmd/ ,导入分标准库与其他两组。
使用方式与限制:资料给出按需读取的参考文件路径,如 references/versions/go1.NN.md、references/conventions/errors.md、gotchas.md、concurrency.md、testing.md、structure.md、idioms.md,以及用 gopls 的 LSP 工具处理 Go 标识符而非 Grep/Glob。是否收费、适用平台、具体安装命令等内容暂未提供。