Похоже, вам нужен пакет 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)
}
Доступ к полям структуры с использованием синтаксиса Go Template в вашем представлении (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>