我正在克隆一个私人 go 项目。
在代码编辑器和运行 golangci-lint 时出现以下错误。
示例代码是这样的:
func TestAService(t *testing.T) {
...
err := service.AService()
if err != nil {
t.Errorf("Error on executing the test cases %w", err)
}
}
Run Code Online (Sandbox Code Playgroud)
go项目在其他笔记本电脑上运行良好,但我使用的笔记本电脑出现此错误。
两台笔记本电脑使用的go版本都是:go 1.17
您发布的屏幕截图不是错误,它们是 IDE 发出的有关代码中潜在问题的警告。
但testing.T.Errorf不支持(与支持和不接受的情况%w相同),因此警告是正确的。fmt.Sprintf
这些消息不会阻止代码的构建和运行,但如果出现错误,字符串的格式将被关闭。
如果您运行代码,并且出现错误,您将得到类似这样的信息(后面的部分%!w将取决于您的确切错误值)。
Error on executing the test cases %!w(*errors.errorString=&{some error})
Run Code Online (Sandbox Code Playgroud)
您收到的具体警告可能是 new 1,但我不相信这个错误代码在任何版本的 go 中都能令人满意地工作。当然,由于大多数测试错误通常是看不见的(因为测试通过了),因此该缺陷可能仍然不可见。
修复方法是将%w(wrap error) 替换为%v(以默认方式格式化对象,对于错误将使用其字符串形式)。
1您看到的 lint 消息来自“go tool vet”,由2021 年 5 月提交的此变更列表创建。有可能在您的其他计算机上,您正在使用此工具的早期版本进行 linting。
| 归档时间: |
|
| 查看次数: |
4711 次 |
| 最近记录: |