我有一个包含JSON字段的结构体,类似于以下内容:
detail := &Detail{ Name string Detail json.RawMessage }
模板看起来像这样:
detail = 在{{Name}} {{CreatedAt}} {{UpdatedAt}}处
我的问题是,我们是否可以使用一个或多个结构体来生成单个模板,或者只能限制为一个结构体。
我有一个包含JSON字段的结构体,类似于以下内容:
detail := &Detail{ Name string Detail json.RawMessage }
模板看起来像这样:
detail = 在{{Name}} {{CreatedAt}} {{UpdatedAt}}处
我的问题是,我们是否可以使用一个或多个结构体来生成单个模板,或者只能限制为一个结构体。
您可以传递任意数量的参数。由于您没有提供足够的示例供我参考,所以我将做一些假设,但这是如何处理它的方法:
// Shorthand - useful!
type M map[string]interface
func SomeHandler(w http.ResponseWriter, r *http.Request) {
detail := Detail{}
// From a DB, or API response, etc.
populateDetail(&detail)
user := User{}
populateUser(&user)
// Get a session, set headers, etc.
// Assuming tmpl is already a defined *template.Template
tmpl.RenderTemplate(w, "index.tmpl", M{
// We can pass as many things as we like
"detail": detail,
"profile": user,
"status": "", // Just an example
}
}
...以及我们的模板:
<!DOCTYPE html>
<html>
<body>
// Using "with"
{{ with .detail }}
{{ .Name }}
{{ .CreatedAt }}
{{ .UpdatedAt }}
{{ end }}
// ... or the fully-qualified way
// User has fields "Name", "Email", "Address". We'll use just two.
Hi there, {{ .profile.Name }}!
Logged in as {{ .profile.Email }}
</body>
</html>