在Go中将多个结构传递给ExecuteTemplate-最佳做法

问题描述 投票:0回答:1

当前,我正在将多个结构传递给ExecuteTemplate,但是有没有更有效,更简洁或更简洁的方法呢?

Go

type user struct {
        Username string
        Password string
} 

type meta struct {
        Title   string
        Content string
}

func index(w http.ResponseWriter, req *http.Request) {
        u := getUser(w, req)
        m := meta{
                Title: "Homepage",
                Content: "Homepage meta content",
        }
        users := []user{u}
        metas := []meta{m}
        data := struct {
                User []user
                Meta []meta
        }{
                users,
                metas,
        } 
        err := tpl.ExecuteTemplate(w, "index.html", data)
        if err != nil {
        log.Fatalln(err)
    }
}

HTML

{{range .Meta}}
    {{.Title}}
    {{.Content}}
{{end}}
go go-templates
1个回答
0
投票

使用地图可以更简洁地实现相同:

err := tpl.ExecuteTemplate(w, "index.html", map[string]interface{}{"User":[]user{u},
"Meta":[]meta{m}})
© www.soinside.com 2019 - 2024. All rights reserved.