Wie greife ich innerhalb von Bereichsschleifen auf Nichtstrukturfelder in Go-Vorlagen zu?

DDD
Freigeben: 2024-11-09 01:00:02
Original
828 Leute haben es durchsucht

How to Access Non-Struct Fields in Go Templates Within Range Loops?

Zugriff auf Nicht-Strukturfelder in Go-Vorlagen innerhalb von Bereichsschleifen

Beim Iterieren über ein Segment von Strukturen innerhalb einer Go-Vorlage mit dem {{ Wenn Sie in der range}}-Schleife versuchen, auf ein Feld zuzugreifen, das nicht direkt Teil der Struktur ist, tritt möglicherweise ein Fehler auf. Betrachten Sie beispielsweise das folgende Beispiel:

type User struct {
    Username string
    Password []byte
    Email string
    ...
}

renderer.HTML(w, http.StatusOK, "users/index", map[string]interface{}{
  "lang":  chi.URLParam(r, "lang"),
  "users": users})
Nach dem Login kopieren

Innerhalb der HTML-Vorlage kann beim Versuch, auf das Feld {{ .lang }} zuzugreifen, der folgende Fehler auftreten:

`got template: can't evaluate field X in type Y (X not part of Y but stuck in a {{range}} loop)`
Nach dem Login kopieren

Dieser Fehler tritt auf, weil das Feld {{ .lang }} nicht Teil der Benutzerstruktur ist. Um dieses Problem zu beheben, können Sie die Variable $ verwenden, die auf die Daten verweist, die {{ zugewiesen sind. }} nach dem Aufruf der {{range}}-Schleife.

{{ range .users }}
  <form action="/{{ $.lang }}/users" method="POST">
    <input type="text" name="Username" value="{{ .Username }}">
    <input type="text" name="Email" value="{{ .Email }}">
  </form>
{{ end }}
Nach dem Login kopieren

Gemäß der Go-Vorlagendokumentation wird die Variable $ automatisch auf die Daten gesetzt, wenn die Ausführung der {{range}}-Schleife beginnt Argument, das an die Vorlage übergeben wird. In diesem Fall ist das Datenargument eine Zuordnung, die den Lang-Schlüssel enthält. Daher können Sie $ verwenden, um auf den lang-Wert innerhalb der Schleife zuzugreifen.

Wenn Sie Zugriff auf mehrere Nicht-Strukturfelder innerhalb verschachtelter Schleifen benötigen, können Sie auch die with-Anweisung oder Variablenzuweisungsanweisungen verwenden, um {{ . }} in eine andere Variable.

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

Quelle:php.cn
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage