Sorry for the basic question. I'd like to pass a slice as arguments to fmt.Sprintf
. Something like this:
values := []string{"foo", "bar", "baz"}
result := fmt.Sprintf("%s%s%s", values...)
And the result would be foobarbaz
, but this obviously doesn't work.
(the string I want to format is more complicated than that, so a simple concatenation won't do it :)
So the question is: if I have am array, how can I pass it as separated arguments to fmt.Sprintf
? Or: can I call a function passing an list of arguments in Go?
As you found out on IRC, this will work:
Your original code doesn't work because
fmt.Sprintf
accepts a[]interface{}
and[]string
can't be converted to that type, implicitly or explicitly.I think the issue with doing this is that the Sprintf won't work with unbounded length slices, so it's not practical. The number of format parameters must match the number of formatting directives. You will either have to extract them into local variables or write something to iterate the slice and concatenate the strings together. I'd go for the latter.