问题:
对于那些喜欢方便的人,将多个变量传递给Sprintf 函数可能很乏味。尝试对字符串切片执行此操作时,可能会出现“cannot use v (type []string) as type []interface {} in argument to fmt.Printf”之类的错误。
解决方案:
要解决此问题,请将您的切片声明为 []interface{},并将其与 Sprintf 的预期参数类型对齐。 Sprintf 的签名指定:
<code class="go">func Printf(format string, a ...interface{}) (n int, err error)</code>
实现:
<code class="go">s := []interface{}{"a", "b", "c", "d"} fmt.Printf("%5s %4s %3s\n", s[1], s[2], s[3]) v := s[1:] fmt.Printf("%5s %4s %3s\n", v...)</code>
解释:
输出:
b c d b c d
附加说明:
如果您需要超过10个参数,只需根据需要调整切片中的元素数量即可。解决方案保持不变。
以上是如何使用切片将多个变量传递给 Go 的 Sprintf 函数?的详细内容。更多信息请关注PHP中文网其他相关文章!