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

标签 go gofmt

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

有没有办法用可变数量的元素调用 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

或者,如果您不想在行中留有最后一个空格,则可以创建 %s 的 slice ,然后使用 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

关于go - 如何格式化包含动态数量元素的字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59095227/

相关文章:

go - gqlgen - DirectiveResolver 未由生成的包导出

go - golang 中的 C 风格条件编译

string - 如何在 Go 中返回 Nil 字符串?

go - 如何打印反斜杠?

go - 在 Sublime Text 中保存时运行 goimports?

go - 有没有办法在不完全禁用 gofmt 的情况下防止 gofmt 将代码函数转换为多行?

io - 使用 io.Copy 响应时,谁应该为错误负责?

go - Int 串进去?

go - Vim 正常模式将制表符显示为 1 个字符宽,不与左边距对齐

go - Go 中的缩进 : tabs or spaces?