循环遍历模板中的对象数组(Go)

gre*_*ghz 7 templates go

我正在将一个struct(一个元素是一个Category对象的数组)传递给模板进行渲染.在模板中,我的代码看起来像这样:

{.repeated section Categories}
    <p>{@}</p>
{.end}
Run Code Online (Sandbox Code Playgroud)

但是,每个类别都有一些我需要能够访问的元素(例如Title).我尝试过像{@ .Title}这样的东西,但我似乎无法找到完成此任务的正确语法.如何在模板循环期间访问数组中的数据成员?

tux*_*21b 7

你可以写{Title}.

每当模板包遇到一个标识符时,它会尝试在当前对象中查找它,如果它没有找到任何内容,它会尝试父项(直到根目录).的@,如果你wan't访问当前对象作为一个整体,而不是它的属性之一是就在那里.

由于我不习惯模板包,我创建了一个小例子:

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,
    })
}
Run Code Online (Sandbox Code Playgroud)