В этой статье рассматривается проблема получения полей структуры из элементов карты в шаблонах HTML с помощью html/ пакет шаблона в Go.
Рассмотрим следующую структуру задачи:
type Task struct {
Cmd string
Args []string
Desc string
}
Кроме того, карта инициализируется со структурами Task в качестве значений и строками в качестве ключей:
var taskMap = map[string]Task{
"find": Task{
Cmd: "find",
Args: []string{"/tmp/"},
Desc: "find files in /tmp dir",
},
"grep": Task{
Cmd: "grep",
Args:[]string{"foo","/tmp/*", "-R"},
Desc: "grep files match having foo",
},
}
Теперь давайте рассмотрим рассматриваемую проблему. Для анализа HTML-страницы используется шаблон:
func listHandle(w http.ResponseWriter, r *http.Request){
t, _ := template.ParseFiles("index.tmpl")
t.Execute(w, taskMap)
}
Следующий фрагмент кода представляет шаблон index.tmpl:
{{range $key, $value := .}}
Task Name: {{$key}}
Task Value: {{$value}}
Task description: {{$value.Desc}}
{{end}}
Этот подход успешно выводит ключи и значения карты, но попытки доступа к полям задачи в шаблоне, например, с помощью {{$value.Desc}}, приводят к ошибкам.
Решение заключается в экспорте полей, к которым вы хотите получить доступ, в шаблонах. Этого можно добиться, набрав первую букву имен полей с заглавной буквы:
type Task struct {
Cmd string
Args []string
Desc string
}
Следовательно, ссылки на имена полей в шаблоне также должны быть написаны с заглавной буквы:
{{range $key, $value := .}}
Task Name: {{$key}}
Task Value: {{$value}}
Task description: {{$value.Desc}}
{{end}}
Следуя этим шагам, вы сможете успешно получить и отобразить поле «Описание» каждой задачи в шаблоне.
Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.
Copyright© 2022 湘ICP备2022001581号-3