我正在尝试显示逗号分隔值的列表,并且不希望在最后一个项目后显示逗号(或者只有一个项目时只显示一个逗号)。
到目前为止我的代码:
Equipment:
{{$equipment := .Equipment}}
{{ range $index, $element := .Equipment}}
{{$element.Name}}
{{if lt $index ((len $equipment) -1)}}
,
{{end}}
{{end}}
当前输出:Equipment: Mat , Dumbbell ,
如何摆脱尾随的逗号
答案 0 :(得分:57)
您可以使用的一个好方法是:
Equipment:
{{$equipment := .Equipment}}
{{ range $index, $element := .Equipment}}
{{if $index}},{{end}}
{{$element.Name}}
{{end}}
这是有效的,因为第一个索引是0,它在if语句中返回false。因此,此代码对第一个索引返回false,然后在每个后续迭代前放置一个逗号。这会产生逗号分隔的列表,而不带前导或尾随逗号。
答案 1 :(得分:12)
添加模板功能,为您完成工作。 strings.Join
非常适合您的用例。
假设tmpl
包含您的模板,请将Join
功能添加到您的模板中:
tmpl = tmpl.Funcs(template.FuncMap{"StringsJoin": strings.Join})
模板:
Equipment:
{{ StringsJoin .Equipment ", " }}
答案 2 :(得分:0)
如果您愿意使用外部库,则似乎小树枝库具有“ join”功能(请参见here):
加入
使用给定的分隔符将字符串列表加入单个字符串。
list "hello" "world" | join "_"
以上将产生hello_world
join将尝试将非字符串转换为字符串值:
list 1 2 3 | join "+"
以上将产生1 + 2 + 3
答案 3 :(得分:0)
另一种给猫剥皮的方法,如果您可以为该字段创建一个新类型。
type MyList []string
func (list MyList) Join() string {
return strings.Join(list, ", ")
}
然后你就可以像正则一样使用模板中的函数了:
{{ .MyList.Join }}