此panicf-sprintf为什么在Golang 1.11中引起 type 错误? Go不能解释原因,即使它说这是一个常见错误。
https://golang.org/doc/go1.11#vet
go vet
现在在构建过程中被强制执行。
func panicf(s string, i ...interface{}) { panic(fmt.Sprintf(s, i)) }
测试正在返回
missing ... in args forwarded to printf-like function
vet
将此描述为
func (*ptrStringer) BadWrap(x int, args ...interface{}) string {
return fmt.Sprint(args) // ERROR "missing ... in args forwarded to print-like function"
}
func (*ptrStringer) BadWrapf(x int, format string, args ...interface{}) string {
return fmt.Sprintf(format, args) // ERROR "missing ... in args forwarded to printf-like function"
在此情况下,请在 golang 中帮助解释...
。
这是一个实用的游乐场:https://play.golang.org/p/DijjanQNkxK
答案 0 :(得分:2)
panicf()
接受i
作为可变参数,与fmt.Sprintf()
相同。因此,您必须告诉编译器您希望将i
的每个值发送到fmt.Sprintf()
,而不是将整个内容作为切片发送。
因此将代码更改为:
func panicf(s string, i ...interface{}) { panic(fmt.Sprintf(s, i...)) }