Heim >Backend-Entwicklung >Golang >Wie greife ich in Go auf verschachtelte Strukturfelder 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>
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>
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>
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>
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>
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>
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!