如何格式化包含动态数量元素的字符串?
How to format a string containing a dynamic number of elements?
我正在尝试根据从调用它的函数接收到的元素来格式化字符串。这个元素的数量可以从一个到多个不等。
有没有办法用可变数量的元素调用 fmt.Sprintf。大致如下:
receivedElements := []interface{}{"some","values"}
formattedString := fmt.Sprintf("Received elements: ...%s", receivedElements...)
Output: Received elements: some values
你可以这样使用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
或者如果您不想在行中有最后一个 space,您可以创建 %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...))
我正在尝试根据从调用它的函数接收到的元素来格式化字符串。这个元素的数量可以从一个到多个不等。
有没有办法用可变数量的元素调用 fmt.Sprintf。大致如下:
receivedElements := []interface{}{"some","values"}
formattedString := fmt.Sprintf("Received elements: ...%s", receivedElements...)
Output: Received elements: some values
你可以这样使用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
或者如果您不想在行中有最后一个 space,您可以创建 %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...))