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

时间:2011-05-29 05:50:11

标签: templates go

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

{.repeated section Categories}
    <p>{@}</p>
{.end}

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

1 个答案:

答案 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,
    })
}