我试图在模板中进行迭代迭代,但似乎没有办法进行迭代。
而不是
{{range $i, $e := .aSlice}}
我想做这样的事情
{{range $i := 1 .. 10}}
<div>{{$i}}</div>
{{end}}
有什么建议吗?谢谢!
答案 0 :(得分:11)
对于最少量的工作,您可以使用包github.com/bradfitz/iter。
它提供了一个函数N
,你可以这样使用它:
{{range $i, $_ := N 10}}
<div>{{$i}}</div>
{{end}}
使用模板上的Funcs
方法添加功能N
,如下所示:
myTemplate.Funcs(template.FuncMap{"N": iter.N})
对于1..m
而不是0..m
使用N m+1
并忽略0
:
{{range $i, $_ := N 11}}
{{if $i}}
<div>{{$i}}</div>
{{end}}
{{end}}
当然你可以解决这个完全不同的问题。只需定义自己的功能即可 两个参数并创建一个整数流,例如(play):
func N(start, end int) (stream chan int) {
stream = make(chan int)
go func() {
for i := start; i <= end; i++ {
stream <- i
}
close(stream)
}()
return
}
templ := `{{range $i := N 1 10}}
<div>{{$i}}</div>
{{end}}`
t := template.New("foo").Funcs(template.FuncMap{"N": N})