在搜索了大量文档和论坛主题之后,我还没有找到使用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模板引擎实现此目的?任何帮助将不胜感激。
答案 0 :(得分:1)
如评论中所述,您可以在将切片发送到模板之前修剪切片,但如果它是您之后需要继续使用的嵌套结构的一部分,则可能会出现问题。
另一种选择可能是避免在循环内的索引处使用if值处理3个以上的元素:
{{range $i, $val := .Bars}}
{{if le $i 3}}<li> {{$val.Name}} </li>{{end}}
{{end}}