Показать таблицу из среза с моей структурой Golang - PullRequest
0 голосов
/ 25 мая 2019

Я хочу показать таблицу, в которой каждая строка содержит мои данные структуры.

Вот моя структура:

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-код, и я хочу, чтобы весь фрагмент был установлен в этой таблице - каждая строка содержит одну структуру данных.

Как мне этого добиться?

Спасибо!

1 Ответ

1 голос
/ 25 мая 2019

Похоже, вам нужен пакет 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...