英文:
Go Templates: looping over index
问题
我想在Go的html/template中渲染一个简单的分页列表。Go模板只支持通过范围进行循环({{range x}}{{.}}{{end}}
) - 我只有一个简单的整数。有没有比创建一个大小合适的假切片、映射或通道更优雅的方法?所有这些方法似乎都有点过于繁琐,只是为了输出N次某个内容。
英文:
I want to render a simple pagination list in a Go html/template. Go templates only support for loops over ranges ({{range x}}{{.}}{{end}}
) - I only have a simple int
. Is there a more elegant way than creating a fake slice, map, or chan of the right size? All of that seems a bit heavy handed just for outputting something N times.
答案1
得分: 3
你可以注册一个生成切片的函数:
package main
import (
"os"
"text/template"
)
func main() {
funcMap := template.FuncMap{
"slice": func(i int) []int { return make([]int, i) },
}
tmpl := `{{$x := .}}{{range slice 10}}<p>{{$x}}</p>{{end}}`
t, _ := template.New("template").Funcs(funcMap).Parse(tmpl)
t.Execute(os.Stdout, "42")
}
在playground中查看。
英文:
You can register a function which produces a slice:
package main
import (
"os"
"text/template"
)
func main() {
funcMap := template.FuncMap{
"slice": func(i int) []int { return make([]int, i) },
}
tmpl := `{{$x := .}}{{range slice 10}}<p>{{$x}}</p>{{end}}`
t, _ := template.New("template").Funcs(funcMap).Parse(tmpl)
t.Execute(os.Stdout, "42")
}
Check it in playground
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论