«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как получить доступ к вложенным полям структуры в шаблонах HTML в Go?

Как получить доступ к вложенным полям структуры в шаблонах HTML в Go?

Опубликовано 17 ноября 2024 г.
Просматривать:497

How to Access Nested Struct Fields in HTML Templates in Go?

Как получить доступ к полям структуры элементов карты в шаблонах HTML в Go

В этой статье рассматривается проблема получения полей структуры из элементов карты в шаблонах 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}}

    Следуя этим шагам, вы сможете успешно получить и отобразить поле «Описание» каждой задачи в шаблоне.

    Заявление о выпуске Эта статья перепечатана по адресу: 1729726421. Если есть какие-либо нарушения, свяжитесь с [email protected], чтобы удалить их.
    Последний учебник Более>

    Изучайте китайский

    Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

    Copyright© 2022 湘ICP备2022001581号-3