我正在一个项目中使用以下类似内容
func Test(format string, args ...interface{}) string {
return fmt.Sprintf(format, args...)
}
现在,当我运行go vet -v ./...
时,它会警告我:
无法在调用Sprintf时检查非恒定格式
据我所知,这是因为Sprintf
的第一个参数不是常量,并且可以是基本上以格式字符串形式传递的任何内容。
也很常见,例如here on vet test itself
现在,我知道这是兽医工具中的一个错误,可以通过将-printf=false
参数传递给兽医来解决。但这也会禁用所有其他printf
检查,这是我不希望的。
现在真正的问题是,如何解决这些警告?
答案 0 :(得分:2)
如果通过gometalinter
软件包调用“ go vet”,则可以在注释中使用no-lint directive告诉gometalinter忽略某些警告。示例:
func Test(format string, args ...interface{}) string {
return fmt.Sprintf(format, args...) // nolint: vet
}