Templates 戈朗。如何使用html/模板包创建循环函数
我正在尝试将循环实现为自定义函数。它需要迭代次数和花括号之间的内容,然后它应该迭代括号之间的内容n次。请参见示例: main.goTemplates 戈朗。如何使用html/模板包创建循环函数,templates,go,Templates,Go,我正在尝试将循环实现为自定义函数。它需要迭代次数和花括号之间的内容,然后它应该迭代括号之间的内容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 <=
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)
template.Must(template.ParseFiles(“palete.html”)).Funcs(template.FuncMap{
“循环”:func(n int,内容字符串)字符串{
var字符串
对于i:=0;i可以对返回切片的函数使用range
主程序包
进口(
“html/模板”
“操作系统”
)
func main(){
html:=`
{{range loop 16}}
{{end}
`
tmpl:=template.Must(template.New(“test”).Funcs(template.FuncMap{
“循环”:func(n int)[]结构{}{
返回make([]结构{},n)
},
}).Parse(html))
tmpl.Execute(os.Stdout,nil)
}
好主意!因此无法从花括号中获取内容?)如果您不使用切片元素,则使用空结构更有效。这样您只分配一个切片头(恒定大小),而不是n个元素。是的!您完全正确!)@Innominate,请更新您的答案。
{{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>
package main
import (
"html/template"
"os"
)
func main() {
html := `
<div class="row -flex palette">
{{range loop 16}}
<div class="col-2"></div>
{{end}}
</div>`
tmpl := template.Must(template.New("test").Funcs(template.FuncMap{
"loop": func(n int) []struct{} {
return make([]struct{}, n)
},
}).Parse(html))
tmpl.Execute(os.Stdout, nil)
}