我使用err113
的的一部分golangci-lint
。
它在抱怨...
foo_test.go:55:61: err113: do not define dynamic errors, use wrapped static errors instead: "errors.New(\"repo gave err\")" (goerr113)
repoMock.EXPECT().Save(gomock.Eq(&foooBarBar)).Return(nil, errors.New("repo gave err")),
^
foo_test.go:22:42: err113: do not define dynamic errors, use wrapped static errors instead: "errors.New(\"oops\")" (goerr113)
repoMock.EXPECT().FindAll().Return(nil, errors.New("oops"))
^
解决此问题的最佳方法是什么?
引用https://github.com/Djarvur/go-err113
同样,报告任何error.New()和fmt.Errorf()方法的调用,但用于初始化程序包级变量的调用和包装其他错误的fmt.Errorf()调用除外。
我正在为此举一个惯用的例子。
根据建议声明包级变量:
var repoGaveErr = errors.New("repo gave err")
func someFunc() {
repoMock.EXPECT().Save(gomock.Eq(&foooBarBar)).Return(nil, repoGaveErr)
}
每次调用error.New都会分配一个新的唯一错误值。应用程序通过声明包级变量来创建表示错误的单个值。
单一价值有两个动机:
应用程序可以比较相等性的值以检查特定的错误情况。
减少内存分配(尽管实际上可能没什么大不了的)
值io.EOF是一个典型示例。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句