我想显示一个表格,每一行都包含我的结构数据。
这是我的结构:
type My_Struct struct {
FIRST_FIELD string
SECOND_FIELD string
THIED_FIELD string
}
这是我的html代码:
<table id="t01">
<tr>
<th>FIRST FIELD</th>
<th>SECOND FIELD</th>
<th>THIRD FIELD</th>
</tr>
<tr>
<td>FIRST_OBJ_HERE_SHOULD_BE_THE_FIRST_FIELD</td>
<td>FIRST_OBJ_HERE_SHOULD_BE_THE_SECOND_FIELD</td>
<td>FIRST_OBJ_HERE_SHOULD_BE_THE_THIRD_FIELD</td>
</tr>
<tr>
<td>SECOND_OBJ_HERE_SHOULD_BE_THE_FIRST_FIELD</td>
<td>SECOND_OBJ_HERE_SHOULD_BE_THE_SECOND_FIELD</td>
<td>SECOND_OBJ_HERE_SHOULD_BE_THE_THIRD_FIELD</td>
</tr>
</table>
如您所见,我想将包含我的结构的切片(每个包含3个文件)传递给此html代码,并且希望将整个切片设置在此表中-每行包含一个struct数据。 / p>
我该如何实现?
谢谢!
答案 0 :(得分:1)
似乎您想要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>