Voi*_*ain 9 templates loops go
我正在尝试在模板中进行迭代迭代,但似乎没有办法进行迭代.
代替
{{range $i, $e := .aSlice}}
Run Code Online (Sandbox Code Playgroud)
我想做这样的事情
{{range $i := 1 .. 10}}
<div>{{$i}}</div>
{{end}}
Run Code Online (Sandbox Code Playgroud)
有什么建议?谢谢!
nem*_*emo 11
对于最少量的工作,您可以使用github.com/bradfitz/iter包.它提供了一个N你可以使用的功能:
{{range $i, $_ := N 10}}
<div>{{$i}}</div>
{{end}}
Run Code Online (Sandbox Code Playgroud)
使用Funcs模板上的方法添加如下函数N:
myTemplate.Funcs(template.FuncMap{"N": iter.N})
Run Code Online (Sandbox Code Playgroud)
对于1..m不是0..m使用N m+1而忽略了0:
{{range $i, $_ := N 11}}
{{if $i}}
<div>{{$i}}</div>
{{end}}
{{end}}
Run Code Online (Sandbox Code Playgroud)
当然,你可以解决这个完全不同的问题.只需定义自己的函数,它接受两个参数并创建一个整数流,例如(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})
Run Code Online (Sandbox Code Playgroud)