为了账号安全,请及时绑定邮箱和手机立即绑定

为什么下面这个 panic 例子是 golang 的类型错误?

为什么下面这个 panic 例子是 golang 的类型错误?

Go
慕沐林林 2023-05-08 15:17:15
为什么这个 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...)) }


查看完整回答
反对 回复 2023-05-08
  • 1 回答
  • 0 关注
  • 81 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信