Go 迭代模板切片中数量可变的项
在搜索了大量文档和论坛主题之后,我还没有找到一个解决方案,可以使用go模板引擎在一个片段中迭代不同数量的项目 我的情况如下: 我已经设置了3个结构,我正在将其中的Go 迭代模板切片中数量可变的项,go,go-templates,Go,Go Templates,在搜索了大量文档和论坛主题之后,我还没有找到一个解决方案,可以使用go模板引擎在一个片段中迭代不同数量的项目 我的情况如下: 我已经设置了3个结构,我正在将其中的User传递到一个html页面 type User struct { Name string Foos []Foo } type Foo struct { Name string Description string Bars []Bar } type
User
传递到一个html页面
type User struct {
Name string
Foos []Foo
}
type Foo struct {
Name string
Description string
Bars []Bar
}
type Bar struct {
Name string
}
我只想从User
迭代每个Foo
中的前3个Bar
,但我还需要考虑每个Bar
包含少于3项的可能性
下面将迭代所有条
,但我只想列出最多3条,当然,如果切片中只有那么多条,则只列出1或2条
{{range .Foos}}
<div>
<h3>{{.Name}}</h3>
<h4>{{.Description}}</h4>
<ol>
{{range .Bars}}
<li> {{.Name}} </li>
{{end}}
</ol>
</div>
{{end}}
{{range.Foos}
{{.Name}
{{.Description}
{{range.bar}
{{.Name}
{{end}
{{end}
使用go模板引擎是否可以实现这一点?如有任何帮助,我们将不胜感激。如评论中所述,您可以在将切片发送到模板之前对其进行修剪,但如果它是嵌套结构的一部分,您需要在以后继续使用,则可能会出现问题 另一种选择是避免在循环内的索引上处理超过3个if值的元素:
{{range $i, $val := .Bars}}
{{if le $i 3}}<li> {{$val.Name}} </li>{{end}}
{{end}}
{{range$i,$val:=.bar}
{{if le$i 3}}{{$val.Name} {{end}
{{end}
在将结构发送到模板之前,为什么不根据自己的喜好对其进行裁剪?类似于user.Foos=user.Foos[0:3]