„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie greife ich in Go auf verschachtelte Strukturfelder in HTML-Vorlagen zu?

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

Veröffentlicht am 17.11.2024
Durchsuche:613

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 von html/ Vorlagenpaket in Go.

Betrachten Sie die folgende Aufgabenstruktur:

type Task struct {
   Cmd string
   Args []string
   Desc string
}

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

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",
    },
}

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

func listHandle(w http.ResponseWriter, r *http.Request){
    t, _ := template.ParseFiles("index.tmpl")
    t.Execute(w, taskMap)
}

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


{{range $key, $value := .}}
   
  • Task Name: {{$key}}
  • Task Value: {{$value}}
  • Task description: {{$value.Desc}}
  • {{end}}

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

    Die Lösung besteht darin, die Felder, auf die Sie zugreifen möchten, innerhalb der Vorlagen zu exportieren. Dies kann durch die Großschreibung des ersten Buchstabens der Feldnamen erreicht werden:

    type Task struct {
       Cmd string
       Args []string
       Desc string
    }

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

    
    {{range $key, $value := .}}
       
  • Task Name: {{$key}}
  • Task Value: {{$value}}
  • Task description: {{$value.Desc}}
  • {{end}}

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

    Freigabeerklärung Dieser Artikel wird unter folgender Adresse abgedruckt: 1729726421 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
    Neuestes Tutorial Mehr>

    Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

    Copyright© 2022 湘ICP备2022001581号-3