Wie greife ich in Go auf verschachtelte Strukturfelder in HTML-Vorlagen zu?

Linda Hamilton
Freigeben: 2024-10-24 07:46:30
Original
143 Leute haben es durchsucht

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

So greifen Sie in Go auf Strukturfelder von Kartenelementen in HTML-Vorlagen zu

Dieser Artikel befasst sich mit dem Problem des Abrufens von Strukturfeldern aus Kartenelementen in HTML-Vorlagen mithilfe des HTML/ Vorlagenpaket in Go.

Bedenken Sie die folgende Task-Struktur:

<code class="go">type Task struct {
   Cmd string
   Args []string
   Desc string
}</code>
Nach dem Login kopieren
Nach dem Login kopieren

Außerdem wird eine Karte mit Task-Strukturen als Werten und Zeichenfolgen als Schlüssel initialisiert:

<code class="go">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",
    },
}</code>
Nach dem Login kopieren

Lassen Sie uns nun das vorliegende Problem untersuchen. Eine Vorlage wird zum Parsen einer HTML-Seite verwendet:

<code class="go">func listHandle(w http.ResponseWriter, r *http.Request){
    t, _ := template.ParseFiles("index.tmpl")
    t.Execute(w, taskMap)
}</code>
Nach dem Login kopieren

Der folgende Codeausschnitt stellt die index.tmpl-Vorlage dar:

<code class="html"><html>
{{range $key, $value := .}}
   <li>Task Name:        {{$key}}</li>
   <li>Task Value:       {{$value}}</li>
   <li>Task description: {{$value.Desc}}</li>
{{end}}
</html></code>
Nach dem Login kopieren
Nach dem Login kopieren

Dieser Ansatz gibt die Schlüssel und Werte der Karte erfolgreich aus. Versuche, auf die Aufgabenfelder innerhalb der Vorlage zuzugreifen, beispielsweise mit {{$value.Desc}}, führen jedoch zu Fehlern.

Die Lösung liegt im Exportieren der Felder, auf die Sie innerhalb der Vorlagen zugreifen möchten. Dies kann erreicht werden, indem der erste Buchstabe der Feldnamen groß geschrieben wird:

<code class="go">type Task struct {
   Cmd string
   Args []string
   Desc string
}</code>
Nach dem Login kopieren
Nach dem Login kopieren

Folglich müssen Verweise auf Feldnamen innerhalb der Vorlage ebenfalls großgeschrieben werden:

<code class="html"><html>
{{range $key, $value := .}}
   <li>Task Name:        {{$key}}</li>
   <li>Task Value:       {{$value}}</li>
   <li>Task description: {{$value.Desc}}</li>
{{end}}
</html></code>
Nach dem Login kopieren
Nach dem Login kopieren

Indem Sie diese Schritte befolgen , können Sie das Desc-Feld jeder Aufgabe in der Vorlage erfolgreich abrufen und anzeigen.

Das obige ist der detaillierte Inhalt vonWie greife ich in Go auf verschachtelte Strukturfelder in HTML-Vorlagen zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!