用途:为 Go 开发提供按版本约束的编码实践,编辑 .go、go.mod、go.work、*_test.go 或处理 Go 工具链时使用。框架、构建工具与 HTTP 库跟随项目,不在本技能中指定。
主要能力与使用方式:先定语言版本,再读对应参考文档,禁止凭训练数据写 API。版本判定读 go.mod 的 go 行(语言版本),不要用本机 go version 当语言版本;有 go.work 时同样读其中的 go 行。存在 toolchain 时,工具链可能更新,但语法与标准库 API 仍受 go 行约束,例如 go 1.24 + toolchain go1.26.x 仍按 1.24 写,不使用 1.26 才有的 new(expr)。取 1.y(如 go 1.25.2 → 1.25)后打开对应文件写代码:1.24 用 references/1.24.md,1.25 用 references/1.25.md,1.26 用 references/1.26.md,1.27 用 references/1.27.md。单文件 //go:build go1.xx 只抬高该文件。未列出的更新 1.y 以已覆盖最高档为底,再查官方 https://go.dev/doc/go1.N;更旧版本不使用本技能里的新 API。
硬规则(1.24+):整数循环用 for i := range n,遍历 iterator 用 for x := range seq,不要把 for i := 0; i < n; i++ 当默认;错误用 fmt.Errorf("...: %w", err) 或 errors.Join,不要 err.Error() 拼接后再 errors.New;测试表驱动用 tests := []struct{ name string; ... }{...} 加 t.Run(tt.name, ...);标准库已有的能力不要再拉重复实现(尤其 crypto/*、testing、iter),先搜 pkg.go.dev 当前语言版本的包文档。
限制:资料未提供该技能的收费、安装方式、平台与效果信息;参考文件内容与官方更新细节暂未提供。