我正在克隆一個私人圍棋項目。在代碼編輯器和運行 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
1 回答

一只甜甜圈
TA貢獻1836條經驗 獲得超5個贊
您發布的屏幕截圖不是錯誤,它們是來自 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 以默認方式,對于錯誤將使用其字符串形式)。
- 1 回答
- 0 關注
- 305 瀏覽
添加回答
舉報
0/150
提交
取消