Golang用模板中的逗号分隔项目

Lee*_*Lee 31 go

我正在尝试显示逗号分隔值的列表,并且不希望在最后一个项目后显示逗号(如果只有一个项目,则不显示唯一的项目).

我的代码到目前为止:

Equipment:
    {{$equipment := .Equipment}}
    {{ range $index, $element := .Equipment}}
        {{$element.Name}}
        {{if lt $index ((len $equipment) -1)}}
            ,
        {{end}}
    {{end}}
Run Code Online (Sandbox Code Playgroud)

当前输出:Equipment: Mat , Dumbbell , 如何摆脱尾随逗号

Rob*_*obF 67

你可以使用的一个很好的技巧是:

Equipment:
    {{$equipment := .Equipment}}
    {{ range $index, $element := .Equipment}}
        {{if $index}},{{end}}
        {{$element.Name}}
    {{end}}
Run Code Online (Sandbox Code Playgroud)

这是有效的,因为第一个索引是0,它在if语句中返回false.因此,此代码对第一个索引返回false,然后在每个后续迭代前放置一个逗号.这会生成逗号分隔的列表,而不包含前导或尾随逗号.

  • 此外,您仍然可以引用没有“$element”的字段:“{{.Name}}”。 (3认同)
  • 为什么需要 `$equipment` 变量? (2认同)

jma*_*ney 18

添加模板功能为您完成工作.strings.Join非常适合您的用例.

假设tmpl包含模板,请将该Join函数添加到模板中:

tmpl = tmpl.Funcs(template.FuncMap{"StringsJoin": strings.Join})
Run Code Online (Sandbox Code Playgroud)

模板:

Equipment:
    {{ StringsJoin .Equipment ", " }}
Run Code Online (Sandbox Code Playgroud)

操场

文档:https://golang.org/pkg/text/template/#FuncMap