Go 模板:嵌套范围是否可能?

这个看起来很简单,但它让我发疯。


如何在 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模板有什么办法可以做我想做的事吗?


慕仙森
浏览 160回答 1
1回答
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go