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

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

Mary-Kate Olsen
发布: 2024-11-05 00:16:02
原创
406 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板