实现错误版本。接受与 fmt 相同参数的新版本fmt.Sprintf,可以使用NewError函数,其定义如下:
func NewError(format string, a ...interface{}) error { return errors.New(fmt.Sprintf(format, a)) }
但是,这个函数无法正常工作,因为 a 中的参数个数可变,在 NewError 中变成单个数组参数,导致 Sprintf 只填写格式字符串中的单个参数。
要解决此问题,NewError 中的最终参数应使用 ... 语法标记为可变数量的参数:
func NewError(format string, a ...interface{}) error { return errors.New(fmt.Sprintf(format, a...)) }
这允许 fmt.Sprintf 将 a 解释为可变数量的参数。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3