今天,我将“go vet”纳入了构建 Go 服务的管道之一。我想知道为什么go vet我本地机器上的输出与 CI 服务器上运行的输出不同。我发现 go 版本有所不同 - 至少有一点不同。我的本地 Go 版本是 1.12.4,CI 版本是 1.12.7。这个事实可以解释不同的行为,但我不明白为什么会发生这种情况!有气味:type Something struct { ... BatteryNumber string `json:"number"` ...}type SomethingWithBattery struct { Something Number string `json:"number"` ...}因此,在结构标签中使用两次“数字”,因为 Something-struct 嵌套 SomethingWithBattery - 1.12.4 抱怨,1.12.7 则不然。为什么?
1 回答
肥皂起泡泡
TA贡献1829条经验 获得超6个赞
Go 1 和 Go 程序的未来
工具
最后,Go 工具链(编译器、链接器、构建工具等)正在积极开发中,可能会改变行为。例如,这意味着依赖于工具的位置和属性的脚本可能会被单点版本破坏。
go vet
正在积极开发中,最近已被重写。工具没有兼容性保证,只有语言。
cmd/vet:考虑恢复嵌入字段的标签冲突#30465
go vet 由于有意使用 json 标签隐藏嵌入字段而失败。
此外,Go 工具还修复了错误。例如,问题 30465。
- 1 回答
- 0 关注
- 105 浏览
添加回答
举报
0/150
提交
取消