1 回答
TA贡献1909条经验 获得超7个赞
看起来你想要Go Template包。
以下是您如何使用它的示例:定义一个处理程序,将具有某些已定义字段的结构实例传递给使用 Go 模板的视图:
type MyStruct struct {
SomeField string
}
func MyStructHandler(w http.ResponseWriter, r *http.Request) {
ms := MyStruct{
SomeField: "Hello Friends",
}
t := template.Must(template.ParseFiles("./showmystruct.html"))
t.Execute(w, ms)
}
在您的视图 (showmystruct.html) 中使用 Go Template 语法访问结构字段:
<!DOCTYPE html>
<title>Show My Struct</title>
<h1>{{ .SomeField }}</h1>
更新
如果您对传递列表并对其进行迭代特别感兴趣,那么该{{ range }}关键字很有用。此外,还有一种非常常见的模式(至少在我的世界中),您可以将PageData{}结构传递给视图。
这是一个扩展示例,添加了一个结构列表和一个PageData结构(因此我们可以在模板中访问它的字段):
type MyStruct struct {
SomeField string
}
type PageData struct {
Title string
Data []MyStruct
}
func MyStructHandler(w http.ResponseWriter, r *http.Request) {
data := PageData{
Title: "My Super Awesome Page of Structs",
Data: []MyStruct{
MyStruct{
SomeField: "Hello Friends",
},
MyStruct{
SomeField: "Goodbye Friends",
},
}
t := template.Must(template.ParseFiles("./showmystruct.html"))
t.Execute(w, data)
}
以及修改后的模板 (showmystruct.html):
<!DOCTYPE html>
<title>{{ .Title }}</title>
<ul>
{{ range .Data }}
<li>{{ .SomeField }}</li>
{{ end }}
</ul>
- 1 回答
- 0 关注
- 81 浏览
添加回答
举报