我渲染模板:
w.Header().Set("Content-type", "text/html")
t, _ := template.ParseFiles("index.html")
t.Execute(w, &page{Title: "Title"})
效果很好。但是,例如,如果我有来自数据库的结构呢?
我怎样才能通过Go渲染它?任何解决方案?
答案 0 :(得分:3)
它的作用没有区别。 ExecuteTemplate
接受interface{}
,因此您可以将任何内容传递给您。
我通常会像map[string]interface{}
一样传递:
// Shorthand
type M map[string]interface{}
...
err := t.ExecuteTemplate(w, "posts.tmpl", M{
"posts": &posts,
"user": &user,
"errors": []pageErrors,
}
// posts.tmpl
{{ posts.PostTitle }}
{{ with user }}
Hello, {{ Name }}!
{{ Email }}
{{ end }}
...
希望澄清一下。 Go docs有一个有用的示例,其中包括如何使用html/template
包。
答案 1 :(得分:2)