【发布时间】:2015-05-09 03:56:51
【问题描述】:
我正在尝试将循环实现为自定义函数。它需要大括号之间的迭代次数和内容,然后它应该迭代括号之间的内容 n 次。请看示例:
main.go
template.Must(template.ParseFiles("palette.html")).Funcs(template.FuncMap{
"loop": func(n int, content string) string {
var r string
for i := 0; i <= n; i++ {
r += content
}
return r
},
}).ExecuteTemplate(rw, index, nil)
index.html
{{define "index"}}
<div class="row -flex palette">
{{loop 16}}
<div class="col-2"></div>
{{end}}
</div>
{{end}}
输出
<div class="row -flex palette">
<div class="col-2"></div>
<div class="col-2"></div>
<div class="col-2"></div>
<div class="col-2"></div>
... 16 times
</div>
可以实现吗?动机是text/template 的标准功能不允许仅在大括号之间迭代内容。是的,我们可以通过range 操作通过“外部”数据来实现。
【问题讨论】: