为了增强错误处理,用户可能会寻求创建错误的自定义版本。新接受多个参数的函数,模仿 fmt.Sprintf 的行为。尽管已经做出了尝试,但在正确解释自定义函数中的变量参数方面仍存在挑战。本文探讨了该解决方案,并提供了有关实现强大的错误格式化机制的指导。
其中一种尝试涉及定义一个函数,如下所示:
<code class="go">func NewError(format string, a ...interface{}) error { return errors.New(fmt.Sprintf(format, a)) }</code>
但是,当尝试将变量参数传递给 fmt.Sprintf,导致参数被视为单个数组。要解决此问题,必须在自定义函数中的变量参数 (a) 之后使用 ... 运算符,如下面更正的代码所示:
<code class="go">func NewError(format string, a ...interface{}) error { return errors.New(fmt.Sprintf(format, a...)) }</code>
通过使用 ...运算符 fmt.Sprintf 可以正确解释变量参数并相应地格式化字符串。这允许用户创建自定义错误格式化函数,利用 fmt.Sprintf 强大的格式化功能。
以上是如何正确格式化 Go 中变量参数的错误?的详细内容。更多信息请关注PHP中文网其他相关文章!