这个看似简单,但它让我疯了.
如何在golang模板中的嵌套范围内引用范围更高的struct元素?
例:
type Foo struct {
Id string
Name string
}
type Bar struct {
Id string
Name string
}
var foos []Foo
var bars []Bar
// logic to populate both foos and bars
Run Code Online (Sandbox Code Playgroud)
在模板中:
{{range .foos}}
<div>Foo {{.Name}}</div>
<div>
{{range ..bars}}
<div>Bar {{.Name}} <input type="text" name="ids_{{..Id}}_{{.Id}}" /></div>
{{end}}
</div>
{{end}}
Run Code Online (Sandbox Code Playgroud)
显然..bars和..Id不起作用,但希望我的意图很明确.我想迭代Foo和Bar的所有组合,并生成一个表单元素,其名称由Foo的Id和Bar的Id构建.
问题是似乎不可能:
我通过在两个结构中放置一堆冗余字段来对此进行临时解决,但这对我来说似乎非常难看,违反了DRY,并且总体上感觉非常错误.
golang模板有什么方法可以做我想做的事情吗?