Нет доступа к полям структуры, передаваемой из приложение golang в html template
Коллеги, подскажите в чем не прав. Голову сломал уже. Есть template вида:
{{ define "myreports" }}
{{template "header" }}
<div>
<link rel="stylesheet" href="/assets/zapros.css">
<table>
<thead><th> </th> <th>НАИМЕНОВАНИЕ</th><th>СРОК ПРЕДСТАВЛЕНИЯ</th><th>ДАТА ПОСЛЕДНЕГО ИЗМЕНЕНИЯ</th><th>ДАТА ВОЗВРАТА НА ДОРАБОТКУ</th><th>ДАТА ПОДТВЕРЖДЕНИЯ</th><th> </th></thead>
{{range $id, $value := . }}
<tr>
<td>{{ . }}</td>
<td>{{ $value.id}}</td>
<td>{{ $value.namezapr}}</td>
<td>{{ $value.dead_line}}</td>
<td>{{ $value.last_change}}</td>
<td>{{ $value.first_change}}</td>
<td>{{ $value.back_date}}</td>
<td>{{ $value.fin_date}}</td>
</tr>
{{end}}
</table>
</div>
{{ end }}
Есть хэндлер на golang вида:
func MyreportsHandler(w http.ResponseWriter, r *http.Request) {
rows, err := database.Query("select * from ZaprosT")
if err != nil {
log.Println(err)
}
defer rows.Close()
zaproses := make(map[int]zapros)
for rows.Next() {
p := zapros{}
err := rows.Scan(&p.id, &p.namezapr, &p.dead_line, &p.last_change, &p.first_change, &p.back_date, &p.fin_date)
if err != nil {
fmt.Println(err)
continue
}
zaproses[p.id] = p
}
t := template.Must(template.New("myreports").ParseFiles("templates/myreports.html"))
t = template.Must(t.ParseFiles("templates/header.html"))
t.Execute(w, zaproses)
if err != nil {
fmt.Println(err)
}
}
По всем учебникам структура из мапа должна выводиться в темплейт, но не выводится. Если вывожу весь контекст в стиле {{ . }} выводится весь мап. Данные из бд поступают успешно. Не могу понять что не так.
Ответы (1 шт):
Благодаря камраду Pak Uula ответ был оперативно найден. Все дело в моем пока еще недостаточном знании синтаксиса и некоторых правил Golang, который не позволяет подстановку структуры с неэкспортированными полями (имена полей начинаются с маленькой буквы). Хотя моя версия Golang принимала код без проблем. После замены имен полей структуры zapros на имена, начинающиеся с заглавной буквы все завелось.