如何格式化包含动态数量的元素的字符串?

时间:2019-11-28 19:30:59

标签: go gofmt

我正在尝试根据从调用它的函数接收的元素来格式化字符串。此元素的数量可以从一个到多个。

有没有一种方法可以使用可变数量的元素来调用fmt.Sprintf。类似于:

receivedElements := []interface{}{"some","values"}
formattedString := fmt.Sprintf("Received elements: ...%s", receivedElements...)

Output: Received elements: some values

1 个答案:

答案 0 :(得分:3)

您可以像这样使用https://golang.org/pkg/strings/#Repeat

args := []interface{}{"some", "values"}
fmt.Println(fmt.Sprintf("values: " + strings.Repeat("%s ", len(args)), args...))

https://play.golang.org/p/75J6i2fSCaM

或者如果您不希望行中有最后一个空格,则可以创建%s的切片,然后使用https://golang.org/pkg/strings/#Join

args := []interface{}{"some", "values"}
ph := make([]string, len(args))
for i, _ := range args {
    ph[i] = "%s"
}
fmt.Println(fmt.Sprintf("values: " + strings.Join(ph, ", "), args...))

https://play.golang.org/p/QNZT-i9Rrgn