2026年8月19日golangci-lint推送了2.13.0版本,除了新增go 1.27支持,还同步调整了结构体初始化相关的检查规则。官方版本日志里已经把旧版exhaustruct标记为废弃,引导改用exhaustruct_v5,同时列出相关配置变动。这次升级同时覆盖了新go版本兼容和现有代码质量规则迁移两个部分,仅升级本地的go版本号无法完成全部适配。

来源:Golangci-lint 官方变更记录
官方标注支持Go 1.27,只是给打算切换新工具链的项目提供了明确的适配参考,不代表任意旧版本的lint工具都能正常解析Go 1.27的代码。Golangci-lint的适配说明里明确提到两点:一是编译该lint工具本身使用的Go版本需要符合要求,二是所有内置检查器都要完成适配。不少团队本地和CI环境是分开安装lint工具的,这类场景需要确认两侧使用的发行版本具备对应支持,不能仅依据系统内go命令的版本号,默认两边的检查环境完全一致。
结构体检查规则的迁移有对应的规范要求。当前官方配置页明确说明,exhaustruct_v5是专门用于校验结构体字段是否全部初始化的工具,从2.13.0版本开始正式提供,旧的exhaustruct检查器从该版本开始被标记为弃用。二者是完全独立的检查器名称,如果仅保留旧名称、只修改部分配置项,无法完成完整迁移,此前已经通过类型匹配模式收窄过检查范围的代码库,需要额外留意配置的一致性。
使用 uber-go/dig 在 Golang 中实现依赖注入——基于反射容器,提供 Provide/Invoke、dig.In/dig.Out 参数与结果对象,支持命名依赖等

来源:Golangci-lint 官方检查器设置文档
查阅这个检查器的上游迁移指南可以发现,旧版本的include模式同时承担检查范围和类型筛选两项功能,到v5版本之后,显式检查模式和类型匹配逻辑已经拆分为两套独立参数,迁移过程不能仅将旧参数名替换为新名称就结束操作。此前仅计划检查部分配置类结构体的项目,需要把模式开关和匹配规则全部核对一遍,最终运行的检查覆盖范围可能和原有预期存在偏差。另外上游文档还提及了后续v5版本的迭代方向,实际使用的配置项,需要对照目标发行版本的文档选择。
这次2.13.0版本还修复了包分析事实缓存的bug,也为不少检查器新增了参数:比如dupword新增了skip-raw-strings选项,fatcontext补上了循环和函数字面量的检查开关,goconst也新增了过滤规则。所有改动都能在官方GitHub发布页查到完整记录。为项目升级该版本时需要理清:Go 1.27兼容解决的是代码能否被正常解析的入口问题,检查器迁移解决的是规则判定逻辑是否变更的准确性问题。扫描得到的新告警需要结合开启的配置和具体代码逐项判断,不能将所有差异直接归因为Go工具链更新导致。
golang免费学习笔记(深入):立即使用
在学习笔记中,你将探索golang的核心概念和高级技巧!










