我有一个切片,我在go:
打印到一个html文件<ul>
{{range .arr}}
<li>{{.}}</li>
{{end}}
</ul>
如果len(arr) > 5
,我如何只打印切片的前5个元素?
答案 0 :(得分:8)
首先,我应该提一下,如果你将数组传递给模板,你几乎肯定会做一些奇怪的事情。数组在Go中相对较少使用。通常,您将使用切片。
最简单的方法是在运行模板时传递数组前5个元素的切片。
如果出于某种原因需要模板中的完整输入,可以定义一个用于获取切片的函数,如下所示:
func mkslice(a []string, start, end int) []string {
return a[start:end]
}
(见documentation for how to attach functions to templates)
模板:
{{range mkslice .arr 0 5}}
<li>{{.}}</li>
{{end}}
您还可以使用带有索引的range
操作形式。
{{range $i, $val := .arr}}
{{if lt $i 5}}<li>{{$val}}</li>{{end}}
{{end}}