Heim > Backend-Entwicklung > Golang > Wie greife ich in Go auf Strukturfelder in HTML-Vorlagen zu, wenn Felder nicht exportiert sind?

Wie greife ich in Go auf Strukturfelder in HTML-Vorlagen zu, wenn Felder nicht exportiert sind?

Susan Sarandon
Freigeben: 2024-10-24 07:55:30
Original
632 Leute haben es durchsucht

How to Access Struct Fields in HTML Templates in Go When Fields Are Unexported?

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

Problem

Sie möchten mithilfe von auf die Felder einer in einer Karte gespeicherten Struktur zugreifen html/template-Paket in Go.

Lösung

Die Standard-Go-Vorlagen erlauben keinen Zugriff auf nicht exportierte Felder einer Struktur. Um dies zu ermöglichen, müssen Sie die Felder exportieren, indem Sie den ersten Buchstaben ihrer Namen großschreiben.

Codebeispiel

Struktur mit exportierten Feldern definieren:

<code class="go">type Task struct {
   cmd string
   args []string
   Desc string // Note the capital "D"
}</code>
Nach dem Login kopieren

Karte mit exportierten Strukturen initialisieren:

<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

Vorlage analysieren und ausführen:

<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

Vorlagendatei:

<code class="go"><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

Ausgabe

Die Vorlage kann nun auf die exportierten Felder der Aufgabenstruktur in der Karte zugreifen:

<code class="html"><html>

<li>Task Name:        find</li>
<li>Task Value:       {find [/tmp/] find files in /tmp dir}</li>
<li>Task description: find files in /tmp dir</li>

<li>Task Name:        grep</li>
<li>Task Value:       {grep [foo /tmp/* -R] grep files match having foo}</li>
<li>Task description: grep files match having foo</li>

</html></code>
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie greife ich in Go auf Strukturfelder in HTML-Vorlagen zu, wenn Felder nicht exportiert sind?. 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