go - 为什么这个恐慌示例在 golang 中的类型错误下方?
问题描述
为什么这个 panicf-sprintf在 Golang 1.11 中会导致类型错误?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
解决方案
panicf()
接受i
为可变参数,与 . 相同fmt.Sprintf()
。因此,您必须告诉编译器您希望将 的每个值i
发送到,fmt.Sprintf()
而不是将整个事物作为切片发送。
所以将代码更改为:
func panicf(s string, i ...interface{}) { panic(fmt.Sprintf(s, i...)) }
推荐阅读
- citrus-framework - 有没有办法从测试内部跳过测试?IE 跳过异常 -> TestNGCitrusTestRunner
- python - 来自 CMOS 相机的 pyqtgraph 实时数据
- python - 如何将熊猫函数的完整列表保存到变量中
- react-native - 你能给我推荐一个对初学者友好的解决方案来在 React Native 应用程序中实现电话身份验证吗?
- android - 如何将字体权重应用于在 TextView 上的 XML 中设置为“textAppearance”的自定义样式?
- ios - iOS 上的 Ionic 4 Popover、Alertsheet 等会回滚内容而不是弹出框本身
- excel - Excel VBA PasteSpecial 不适用于特定单元格
- python - 如何使用 Nuitka 从 Python 获取已编译二进制文件的当前路径?
- azure-devops - Azure DevOps 组织设置与项目级别的成本
- java - 为什么 lombok 不提供继承属性的 getter 方法?