Heim > Artikel > Backend-Entwicklung > Wie greife ich innerhalb von Bereichsschleifen auf Nichtstrukturfelder in Go-Vorlagen zu?
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!