(*testing.common).Errorf 不支持错误包装指令 %w

我正在克隆一个私人围棋项目。

在代码编辑器和运行 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


智慧大石
浏览 125回答 1
1回答

一只甜甜圈

您发布的屏幕截图不是错误,它们是来自 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 以默认方式,对于错误将使用其字符串形式)。
打开App,查看更多内容
随时随地看视频慕课网APP