如何在golang模板中迭代一系列数字?

时间:2019-09-02 19:54:31

标签: go go-templates

我想做这样的事情:

non

但是模板未按预期呈现。我该如何解决?

2 个答案:

答案 0 :(得分:2)

模板包不直接支持此功能。创建一个返回整数值切片的模板函数:

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
}

Run it on the Go playground

答案 1 :(得分:0)

您可以在模板中使用小枝库:

https://github.com/Masterminds/sprig