I found this documentation to join two strings, but this doesn't work inside go templates.
Is there a way to join strings inside a go template?
Write a function to join the strings and add it to the template func map:
func join(sep string, s ...string) string {
return strings.Join(s, sep)
}
Add the function to template before parsing:
t, err := template.New(name).Funcs(template.FuncMap{"join": join}).Parse(text)
Use it in the template like this:
{{$x := join ", " "hello" "world"}}
I assign to variable $x
to show how use the function result in a template expression. The result can be used directly as an argument to another function without assigning to a variable.
Here's a version of the function that works with slices instead of variadic arguments:
func join(sep string, s []string) string {
return strings.Join(s, sep)
}
Use it like this where .
is a slice:
{{$x := join ", " .}}
If your goal is to join two strings directly do the output, then then use {{a}}sep{{b}}
where a
and b
are the strings and sep
is the separator.
Use range to join a slice to the output. Here's an example that joins slice .
with separator ", "
.:
{{range $i, $v := .}}{{if $i}}, {{end}}{{$v}}{{end}}