我想为View模型定义一个结构,如下所示:
type AdminView struct {
PageTitle string
UserName string
UserType string
Templates []Template
...
OtherAttr Other
}
帮助我更好地组织模板和DTO,但到目前为止还没有很好地工作。我想要实现的是这样的:
func adminViewHandler (w http.ResponseWriter, r *http.Request) {
data := processRequestData (r) // process request form data
view := AdminView {}
// then assign values to view
view.render(w) // similar to tmpl.Exec(w, data)
}
我想知道我是否正在使用上述方法在渲染View时引入更多抽象。我想知道人们如何在现实世界中使用复杂数据渲染复杂视图。
提前致谢。
答案 0 :(得分:2)
你几乎正常。请记住,Go不是面向对象的语言,因此继承(您正在尝试做的事情)并不是一种非常常见的模式。
相反,您要做的是使用模板,并将视图模型传递到模板中:
view := AdminView{}
...
tmpl.Exec(w, view)