我正在克隆一個私人圍棋專案。
并在代碼編輯器和運行 golangci-lint 時出現以下錯誤。
代碼編輯器截圖錯誤
golangci-lint 截圖錯誤
示例代碼是這樣的:
func TestAService(t *testing.T) {
...
err := service.AService()
if err != nil {
t.Errorf("Error on executing the test cases %w", err)
}
}
go 專案在其他筆記本電腦上運行良好,但我使用它的那個有這個錯誤。
兩臺筆記本使用的go版本是:go 1.17
uj5u.com熱心網友回復:
您發布的螢屏截圖不是錯誤,而是來自 IDE 的關于代碼中潛在問題的警告。
但testing.T.Errorf不支持%w(與fmt.Sprintf它所做的和不接受的相同),所以警告是正確的。
這些訊息不會阻止您的代碼構建和運行,但在出現錯誤的情況下,字串的格式將關閉。
如果您運行代碼,并且出現錯誤,您將得到類似的結果(后面的部分%!w將取決于您擁有的確切錯誤值)。
Error on executing the test cases %!w(*errors.errorString=&{some error})
您收到的具體警告可能是 new 1,但我不相信此錯誤代碼在任何版本的 go 中都能令人滿意地作業。當然,由于大多數測驗錯誤通常是看不到的(因為測驗通過),所以這個缺陷可能一直不可見。
修復方法是將%w(wrap error)替換為%v(format object in the default way,對于錯誤將使用其字串形式)。
1您看到的 lint 訊息來自“go tool vet”,由這個于 2021 年 5 月提交的更改串列創建。這可能在您的另一臺機器上,您正在使用此工具的早期版本進行 lint。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/396428.html
