Golang - HTML模板 - 范围限制

时间:2015-05-05 23:57:09

标签: html go

我有一个切片,我在go:

打印到一个html文件
<ul>
{{range .arr}}
    <li>{{.}}</li>
{{end}}
</ul>

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

1 个答案:

答案 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}}