首页 > 后端开发 > Golang > 如何使用模板在 Go Web 应用程序中多次重复 HTML 代码?

如何使用模板在 Go Web 应用程序中多次重复 HTML 代码?

Barbara Streisand
发布: 2024-12-22 11:05:11
原创
824 人浏览过

How can I repeat HTML code multiple times in a Go web application using templates?

在 Go 中多次重复 HTML 代码

在 Go Web 应用程序中,您需要多次输出特定的 HTML 行,具体取决于 n 的值.

这里有一种方法可以解决这个问题:

在 HTML 模板中, {{range}} 操作允许您可以迭代项目。但是,此操作需要使用切片、数组或映射。

传递零值切片

要满足此要求,您可以传递一个没有分配内存的空切片,例如 make([]struct{}, n).

Template代码:

<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>
登录后复制

使用填充切片

要自定义链接的起始索引,您可以用特定值填充切片。

模板代码:

<ul>
{{range .}}
    <li><a href="/?page={{.}}">{{.}}</a></li>
{{end}}
</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>
登录后复制

使用自定义函数

最后,您可以使用模板中的自定义函数将索引值修改为需要。

模板代码:

<ul>
{{range $idx, $e := .}}{{$idx := (Add $idx)}}
    <li><a href="/?page={{$idx}}">{{$idx}}</a></li>
{{end}}
</ul>
登录后复制

自定义函数:

func Add(i int) int {
    return i + 1
}
登录后复制

输出:

<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 Web 应用程序中多次重复 HTML 代码?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板