Я хочу показать таблицу, в которой каждая строка содержит данные моей структуры.
Вот моя структура:
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-код, и я хочу, чтобы весь слайс был задан в этой таблице - каждая строка содержит данные одной структуры.
Как я могу этого добиться?
Похоже, вам нужен пакет Шаблон перехода.
Вот пример того, как вы можете его использовать: Определите обработчик, который передает экземпляр структуры с некоторыми определенными полями в представление, использующее шаблоны 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)
}
Получите доступ к полям структуры, используя синтаксис шаблона Go в вашем представлении (showmystruct.html):
<!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>
Спасибо! Но моя главная проблема - передать список этой структуры. Как я могу таким образом получить доступ к каждой структуре в списке в HTML-коде?
Я обновил ответ, включив в него повторение диапазона.
Пожалуйста, покажите, что вы пробовали и что не сработало. Это должно быть достаточно просто с использованием пакета html/шаблон.