Golang - HTML模板 - 范围限制

p_m*_*mcp 7 html go

我有一个切片,我在go中打印到一个html文件:

<ul>
{{range .arr}}
    <li>{{.}}</li>
{{end}}
</ul>
Run Code Online (Sandbox Code Playgroud)

如果len(arr) > 5,如何仅打印切片的前5个元素?

Sta*_*ven 8

首先,我应该提一下,如果你将一个数组传递给模板,你几乎肯定会做一些奇怪的事情.数组在Go中相对较少使用.通常,您将使用切片.

最简单的方法是在运行模板时传递数组前5个元素的切片.

如果出于某种原因需要模板中的完整输入,则可以定义一个用于获取切片的函数,如下所示:

func mkslice(a []string, start, end int) []string {
    return a[start:end]
}
Run Code Online (Sandbox Code Playgroud)

(请参阅有关如何将函数附加到模板的文档)

和模板:

{{range mkslice .arr 0 5}}
<li>{{.}}</li>
{{end}}
Run Code Online (Sandbox Code Playgroud)

您还可以使用range带索引的操作形式.

{{range $i, $val := .arr}}
{{if lt $i 5}}<li>{{$val}}</li>{{end}}
{{end}}
Run Code Online (Sandbox Code Playgroud)