迭代模板切片中的可变数量的项目

时间:2018-06-15 20:56:32

标签: go go-templates

在搜索了大量文档和论坛主题之后,我还没有找到使用go模板引擎迭代切片中可变数量的项目的解决方案。

我的情况如下:

我已经设置了3个结构,其中我将User传递给了html页面

type User struct {
    Name    string 
    Foos    []Foo
}

type Foo struct {
    Name        string 
    Description string 
    Bars     []Bar
}

type Bar struct {
    Name    string 
}

我想仅对Bars中每个Foo中的前3 User进行迭代,但我还需要考虑每个Bar包含较少的Bars的可能性超过3项。

以下将迭代所有{{range .Foos}} <div> <h3>{{.Name}}</h3> <h4>{{.Description}}</h4> <ol> {{range .Bars}} <li> {{.Name}} </li> {{end}} </ol> </div> {{end}} ,但我只想列出最多3个,当然只列出1或2,如果切片中只有那么多。

priority

是否可以使用go模板引擎实现此目的?任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

如评论中所述,您可以在将切片发送到模板之前修剪切片,但如果它是您之后需要继续使用的嵌套结构的一部分,则可能会出现问题。

另一种选择可能是避免在循环内的索引处使用if值处理3个以上的元素:

{{range $i, $val := .Bars}}
    {{if le $i 3}}<li> {{$val.Name}} </li>{{end}}
{{end}}