首页 >后端开发 >Golang >如何使用 Go 模板重复 HTML 代码指定的次数?

如何使用 Go 模板重复 HTML 代码指定的次数?

Linda Hamilton
Linda Hamilton原创
2024-12-27 06:06:20918浏览

How can I repeat HTML code a specified number of times using Go templates?

使用 Go 模板重复 HTML 代码

在使用 Go 进行 Web 开发时,有时您可能需要迭代指定的 HTML 行次数。让我们探索如何使用 Go 模板来实现这一点。

使用 {{range}} 操作

要重申 Go 模板中的 HTML 部分,我们可以使用{{range}} 操作。但是,此操作需要可迭代对象,例如切片、数组或映射。

传递零值切片

而不是创建实际的数据结构,我们可以传递一个基本上没有分配内存的零值切片。该切片充当要迭代的 {{range}} 操作的占位符。例如:

const templ = `<ul>
{{range $idx, $e := .}}
    <li><a href="/?page={{$idx}}">{{$idx}}</a></li>
{{end}}
</ul>`
tmpl := template.Must(template.New("").Parse(templ))
n := 5
if err := tmpl.Execute(os.Stdout, make([]struct{}, n)); err != nil {
    panic(err)
}

输出:

<ul>

    <li><a href="/?page=0">0</a></li>

    <li><a href="/?page=1">1</a></li>

    <li><a href="/?page=2">2</a></li>

    <li><a href="/?page=3">3</a></li>

    <li><a href="/?page=4">4</a></li>

</ul>

使用填充切片

如果您需要在以下位置启动索引非零值,考虑用所需值填充切片,然后迭代

tmpl := template.Must(template.New("").Parse(templ))
n := 5
values := make([]int, n)
for i := range values {
    values[i] = (i + 1) * 2
}
if err := tmpl.Execute(os.Stdout, values); err != nil {
    panic(err)
}

输出:

<ul>

    <li><a href="/?page=2">2</a></li>

    <li><a href="/?page=4">4</a></li>

    <li><a href="/?page=6">6</a></li>

    <li><a href="/?page=8">8</a></li>

    <li><a href="/?page=10">10</a></li>

</ul>

使用零值切片和自定义函数

另一种方法是注册自定义函数,增加给定数字并返回结果。这允许您使用零值切片并调用模板中的函数来获取所需的数字。

func main() {
    tmpl := template.Must(template.New("").Funcs(template.FuncMap{
        "Add": func(i int) int { return i + 1 },
    }).Parse(templ))
    n := 5
    if err := tmpl.Execute(os.Stdout, make([]struct{}, n)); err != nil {
        panic(err)
    }
}

const templ = `<ul>
{{range $idx, $e := .}}{{$idx := (Add $idx)}}
    <li><a href="/?page={{$idx}}">{{$idx}}</a></li>
{{end}}
</ul>`

输出:

<ul>

    <li><a href="/?page=1">1</a></li>

    <li><a href="/?page=2">2</a></li>

    <li><a href="/?page=3">3</a></li>

    <li><a href="/?page=4">4</a></li>

    <li><a href="/?page=5">5</a></li>

</ul>

以上是如何使用 Go 模板重复 HTML 代码指定的次数?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn