Заполнение шаблона html из разных слайсов

Всем здравствуйте. У меня есть код который получает данные из базы(две разные таблицы) и кладет данные в две разные структуры. После того как структуры заполнены и соединение с бд закрыто, данные из двух структур летят в два разных слайса. И после этого мне нужно вывести эти данные в один html шаблон. Если я все правильно понял, то template.Execute()может вывести данные только одного слайса(по крайнем мере я не знаю как вывести с его помощью данные из двух слайсов), пэтому я подумал объеденить два слайса в один, но так как слайсы имеют тип двух разных структур, то это не получится сделать(пробовал). Отсюда и вопрос, как вывести данные в один html-шаблон из двух разных слайсов?


Ответы (1 шт):

Автор решения: Senior Pomidor

У вас 2 массива, нужно их вывести в html, как я понял.

<html>
<head>
    <meta charset="utf-8">
</head>
<body>
    {{range .Array1}}
    <tr>

        <td>{{.IdU}}</td>
        <td>{{.Name}}</td>
        <td>{{.SecName}}</td>
        <br>
    </tr>
    {{end}}

    {{range .Array2}}
    <tr>
        <td>{{.Id}}</td>
        <td>{{.Company}}</td>
        <td>{{.Model}}</td>
        <td>{{.Price}}</td>
        <br>
    </tr>
    {{end}}
</body>
</html>

Тогда можно создать кастомную структуру, добавить туда нужные данные или массивы. передать в теймплейт.

    data := struct{
        Array1 []Names
        Array2 []Products
    } {
        Array1: names,
        Array2: products,
    }

    err = templn.Execute(w, data)
    if err != nil {
        panic(err)
    }

Главное, чтобы поля были экспортируемы.

→ Ссылка