如何迭代golang模板中的一系列数字?
How to iterate over a range of numbers in golang template?
我想做这样的事情:
{{range $y := .minYear .maxYear}}
<option value="y"> {{$y}}</option>
{{end}}
但是模板没有按预期呈现。我该如何解决这个问题?
模板包不直接支持这个。创建一个模板函数,其中 returns 整数值的一部分:
var funcs = template.FuncMap{
"intRange": func(start, end int) []int {
n := end - start + 1
result := make([]int, n)
for i := 0; i < n; i++ {
result[i] = start + i
}
return result
},
}
这样使用:
t := template.Must(template.New("").Funcs(funcs).Parse(`{{range $y := intRange .minYear .maxYear}}
<option value="y"> {{$y}}</option>{{end}}`))
err := t.Execute(os.Stdout, map[string]int{"minYear": 1961, "maxYear": 1981})
if err != nil {
// handle error
}
您可以在模板中使用 sprig 库:
我想做这样的事情:
{{range $y := .minYear .maxYear}}
<option value="y"> {{$y}}</option>
{{end}}
但是模板没有按预期呈现。我该如何解决这个问题?
模板包不直接支持这个。创建一个模板函数,其中 returns 整数值的一部分:
var funcs = template.FuncMap{
"intRange": func(start, end int) []int {
n := end - start + 1
result := make([]int, n)
for i := 0; i < n; i++ {
result[i] = start + i
}
return result
},
}
这样使用:
t := template.Must(template.New("").Funcs(funcs).Parse(`{{range $y := intRange .minYear .maxYear}}
<option value="y"> {{$y}}</option>{{end}}`))
err := t.Execute(os.Stdout, map[string]int{"minYear": 1961, "maxYear": 1981})
if err != nil {
// handle error
}
您可以在模板中使用 sprig 库: