Modern Go 是一个用于 Go 语言开发的技能,核心目标是让 Go 相关工作锚定在仓库声明的版本上,而不是模型训练截止时的版本认知。
用途 该技能适用于任何 Go 源码、测试、模块、工具链、构建、升级或 API 相关工作,覆盖从 Go 1.21 起的版本。
主要能力
- 定位版本:检查 go.mod 中的 go 与可选 toolchain 指令,并在相关时检查 go.work、CI、容器和本地工具链固定配置。
- 区分要求:将模块的最低语言/工具链要求与为运行构建而选择的工具链区分开。仅在声明的兼容目标允许,或任务本身提升该目标时,才使用较新特性。
- 版本阅读:阅读升级跨越的每个版本,以及任何特性或行为影响当前任务的版本。
版本雷达
- Go 1.21:严格的工具链要求、PGO、结构化日志、泛型集合辅助函数。
- Go 1.22:每次迭代的循环变量、整数范围、增强的 HTTP 路由、math/rand/v2。
- Go 1.23:range-over-function 迭代器、定时器语义、感知迭代器的库 API。
- Go 1.24:泛型类型别名、工具依赖、Swiss maps、弱指针、新的测试 API。
- Go 1.25:容器感知的 GOMAXPROCS、WaitGroup.Go、稳定的 synctest、实验性 JSON v2。
- Go 1.26:new(expr)、现代化的 go fix、默认启用 Green Tea GC、测试产物。
使用方式 该技能以捆绑文件作为定位参考,然后要求在官方当前文档中核实确切的 API 和行为。覆盖范围止于 Go 1.26;对于更新或不确定的工具链,在做出对版本敏感的决定前,应查阅当前官方发布历史和发布说明。
适用场景 适用于 Go 项目的源码编写、测试、模块管理、工具链配置、构建、版本升级和 API 使用等场景,尤其适合需要跨多个 Go 版本保持兼容性或进行版本升级的工作。
限制 覆盖范围止于 Go 1.26。对于更新或不确定的工具链,需查阅当前官方发布历史和发布说明。捆绑文件仅用于定位,确切的 API 和行为需在官方当前文档中核实。