首页 >后端开发 >Golang >如何在自定义'errors.New”实现中将变量参数传递给'fmt.Sprintf”?

如何在自定义'errors.New”实现中将变量参数传递给'fmt.Sprintf”?

Mary-Kate Olsen
Mary-Kate Olsen原创
2024-11-05 00:16:02415浏览

How to Pass Variable Arguments to `fmt.Sprintf` in a Custom `errors.New` Implementation?

如何实现错误版本。接受与 fmt.Sprintf 相同参数的版本

实现错误版本。接受与 fmt.Sprintf 相同参数的版本。 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 解释为可变数量的参数。

以上是如何在自定义'errors.New”实现中将变量参数传递给'fmt.Sprintf”?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn