今天,我將“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 關注
- 131 瀏覽
添加回答
舉報
0/150
提交
取消