Heim >Backend-Entwicklung >Golang >Wie greife ich in Go auf verschachtelte Strukturfelder in HTML-Vorlagen zu?

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

Linda Hamilton
Linda HamiltonOriginal
2024-10-24 07:46:30231Durchsuche

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>

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!

Stellungnahme:
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