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与相同基础数组相同的值。



