我将一个struct(一个元素是一个Category对象的数组)传递给模板进行渲染。在模板中,我的代码看起来像这样:
{.repeated section Categories}
<p>{@}</p>
{.end}
但是,每个类别都有一些我需要能够访问的元素(例如Title)。我尝试过像{@ .Title}这样的东西,但我似乎无法找到完成此任务的正确语法。如何在模板循环期间访问数组中的数据成员?
答案 0 :(得分:7)
你可以写{Title}
。
每当模板包遇到标识符时,它会尝试在当前对象中查找它,如果它没有找到任何内容,它会尝试父项(直到根目录)。如果您不想作为一个整体访问当前对象而不是其中一个属性,那么@
就在那里。
由于我还不熟悉模板包,我创建了一个小例子:
type Category struct {
Title string
Count int
}
func main() {
tmpl, _ := template.Parse(`
{.repeated section Categories}
<p>{Title} ({Count})</p>
{.end}
`, nil)
categories := []Category{
Category{"Foo", 3},
Category{"Bar", 5},
}
tmpl.Execute(os.Stdout, map[string]interface{} {
"Categories": categories,
})
}