【发布时间】:2013-07-04 18:27:30
【问题描述】:
这个看似简单,却让我发疯。
如何在 golang 模板的嵌套范围内引用范围内更高的结构元素?
例子:
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
在模板中:
{{range .foos}}
<div>Foo {{.Name}}</div>
<div>
{{range ..bars}}
<div>Bar {{.Name}} <input type="text" name="ids_{{..Id}}_{{.Id}}" /></div>
{{end}}
</div>
{{end}}
显然 ..bars 和 ..Id 不起作用,但希望我的意图很明确。我想遍历 Foo 和 Bar 的所有组合,并生成一个表单元素,其名称由 Foo 的 Id 和 Bar 的 Id 构建。
问题是似乎不可能:
- 从 foos 范围范围内访问栏
- 从栏的范围内访问 Foo 的 ID
我有一个临时的解决方法,方法是在两个结构中放置一堆冗余字段,但这对我来说似乎很丑陋,违反了 DRY,而且总的来说感觉很不对。
golang 模板有什么方法可以做我想做的事吗?
【问题讨论】: