这是使用模板函数编写逗号分隔的键/值对的方法。
声明一个函数,该函数返回递增并返回计数器的函数:
func counter() func() int { i := -1 return func() int { i++ return i }}将此功能添加到模板中:
t := template.Must(template.New("example").Funcs(template.FuncMap{"counter": counter}).Parse(temp))像这样在模板中使用它:
{{$c := counter}}{{range $key, $value := $}}{{if call $c}}, {{end}}key:{{$key}} value:{{$value}}{{end}}该模板将分隔符写在键值对之前,而不是写在对之后。
计数器在循环之前创建,并在每次循环中递增。第一次不通过循环写入分隔符。
在操场上跑步。
可以通过将if语句移至Go代码来简化模板中的逻辑:
func separator(s string) func() string { i := -1 return func() string { i++ if i == 0 { return "" } return s }}将功能添加到模板:
t := template.Must(template.New("example").Funcs(template.FuncMap{"separator": separator}).Parse(temp))像这样使用它:
{{$s := separator ", "}}{{range $key, $value := $}}{{call $s}}key:{{$key}} value:{{$value}}{{end}}在操场上跑。



