登录
首页 >  Golang >  Go问答

格式错误。新

来源:Golang技术栈

时间:2023-04-10 21:07:03 309浏览 收藏

从现在开始,努力学习吧!本文《格式错误。新》主要讲解了golang等等相关知识点,我会在golang学习网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你!

问题内容

我想实现一个errors.New接受相同参数的版本,fmt.Sprintf为此我编写了以下函数:

func NewError(format string, a ...interface{}) error {
    return errors.New(fmt.Sprintf(format, a))
}

但是,a它变成了内部的单个数组参数,NewError()从而导致Sprintf()在格式字符串中只填写一个参数。如何强制a将其解释为可变数量的参数?

正确答案

fmt.Errorf已经做了你想做的事。查看它的源代码,您可以看到出了什么问题:

// Errorf formats according to a format specifier and returns the string
// as a value that satisfies error.
func Errorf(format string, a ...interface{}) error {
        return errors.New(Sprintf(format, a...))
}

请注意,您的代码缺少...after a。从规格

将参数传递给 ... 参数

如果最后一个参数可分配给切片类型[]T,则它可以作为...T参数的值原封不动地传递,如果参数后跟.... 在这种情况下,不会创建新切片。

给定切片s并调用

s := []string{"James", "Jasmine"}
Greeting("goodbye:", s...)

Greeting,谁将具有s与相同底层数组相同的值。

文中关于golang的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《格式错误。新》文章吧,也可关注golang学习网公众号了解相关技术文章。

声明:本文转载于:Golang技术栈 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表