首页 >后端开发 >Golang >如何使用 fmt.Errorf 创建类似于 fmt.Sprintf 的自定义错误函数?

如何使用 fmt.Errorf 创建类似于 fmt.Sprintf 的自定义错误函数?

Patricia Arquette
Patricia Arquette原创
2024-11-05 10:19:021086浏览

How can I create a custom error function similar to fmt.Sprintf using fmt.Errorf?

使用 fmt.Errorf 格式化错误消息

初始问题:

您试图构造自定义版本的errors.New,与fmt.Sprintf的输入参数并行。但是,当您实现此函数时:

<code class="go">func NewError(format string, a ...interface{}) error {
    return errors.New(fmt.Sprintf(format, a))
}</code>

您遇到了一个问题,即“a”成为 NewError() 中的单个数组参数。这导致 fmt.Sprintf 无法仅将一个参数替换为格式字符串。

解决方案:

您遇到的障碍源于缺少 ...(省略号)位于函数声明中的“a”参数之后。根据 Go 规范,这种遗漏会阻碍您的代码正确处理可变数量的参数。

fmt.Errorf 来救援

幸运的是,fmt.Errorf 已经存在具有您想要实现的所需功能:

<code class="go">func Errorf(format string, a ...interface{}) error {
    return errors.New(Sprintf(format, a...))
}</code>

通过附加省略号,您使 fmt.Errorf 能够巧妙地将 'a' 解释为可变数量的参数,巧妙地满足格式化的需求错误消息。

以上是如何使用 fmt.Errorf 创建类似于 fmt.Sprintf 的自定义错误函数?的详细内容。更多信息请关注PHP中文网其他相关文章!

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