Heim  >  Artikel  >  Backend-Entwicklung  >  Wie greife ich innerhalb von Bereichsschleifen auf Nichtstrukturfelder in Go-Vorlagen zu?

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

DDD
DDDOriginal
2024-11-09 01:00:02829Durchsuche

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})

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)`

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

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!

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