为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
海绵宝宝撒 2023-07-17 16:44:13
我想做这样的事情:  {{range $y := .minYear    .maxYear}}                                                                                                       <option value="y"> {{$y}}</option>                                                                                                   {{end}}但模板未按预期呈现。我怎样才能解决这个问题?
查看完整描述

2 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

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


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

}

在 Go 游乐场上运行它



查看完整回答
反对 回复 2023-07-17
?
互换的青春

TA贡献1797条经验 获得超6个赞

您可以在模板中使用 sprig 库:

https://github.com/Masterminds/sprig


查看完整回答
反对 回复 2023-07-17
  • 2 回答
  • 0 关注
  • 109 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信