为什么这个 panicf-sprintf在 Golang 1.11 中导致类型错误?Go 没有解释原因,即使它说这是一个常见的错误。https://golang.org/doc/go1.11#vetgo vet现在在构建期间强制执行。func panicf(s string, i ...interface{}) { panic(fmt.Sprintf(s, i)) }测试正在返回missing ... in args forwarded to printf-like functionvet将其描述为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
1 回答
Cats萌萌
TA贡献1805条经验 获得超9个赞
panicf()
接受i
作为可变参数,与fmt.Sprintf()
. 因此,您必须告诉编译器您希望将 的每个值i
发送到,fmt.Sprintf()
而不是将整个值作为一个切片发送。
所以把代码改成:
func panicf(s string, i ...interface{}) { panic(fmt.Sprintf(s, i...)) }
- 1 回答
- 0 关注
- 128 浏览
添加回答
举报
0/150
提交
取消