为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
智慧大石 2022-10-24 09:23:16
我正在克隆一个私人围棋项目。在代码编辑器和运行 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不支持%wfmt.Sprintf和它接受和不接受的一样),所以警告是正确的。

这些消息不会阻止您的代码构建和运行,但在出现错误的情况下,字符串的格式将被关闭。

如果您运行代码,并且出现错误,您将得到类似的结果(后面的部分%!w将取决于您拥有的确切错误值)。

Error on executing the test cases %!w(*errors.errorString=&{some error})

您收到的具体警告可能是 new 1,但我不相信这个错误代码在任何版本的 go. 当然,由于大多数测试错误通常是看不到的(因为测试通过了),所以这个缺陷可能一直是不可见的。

修复方法是将%w(wrap error)替换为%v(format object 以默认方式,对于错误将使用其字符串形式)。


查看完整回答
反对 回复 2022-10-24
  • 1 回答
  • 0 关注
  • 97 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信