【发布时间】:2018-05-07 14:47:41
【问题描述】:
这是我要模拟的示例函数:
package main
import "fmt"
func main() {
fmt.Println(fmt.Sprintf("Initially I want %d %s", 2, "dogs"))
fmt.Println(Sprintf2("Now I want %d %s", 2, "dogs"))
}
func Sprintf2(format string, a ...interface{}) string {
return fmt.Sprintf(format + " and %d cats", append(a, 5))
}
这是游乐场的链接:https://play.golang.org/p/dHDwTlbRLDu
预期输出:
最初我想要 2 条狗
现在我想要 2 只狗和 5 只猫
实际输出:
最初我想要 2 条狗
现在我想要 [2 %!d(string=dogs) 5] %!s(MISSING) 和 %!d(MISSING) 猫
【问题讨论】:
-
a = append(a, myValue) -
没有按预期工作:play.golang.org/p/dHDwTlbRLDu
-
那是因为你没有完全按照你的问题要求做。创建一个
[]interface{}变量,将您的变量添加到该变量中,然后在调用 Sprintf 时将其解压缩 (...)。 -
所做的编辑。做到了。谢谢!