Heim >Backend-Entwicklung >Golang >Wie greife ich in Go-Vorlagen auf Variablen aus äußeren Bereichen zu?

Wie greife ich in Go-Vorlagen auf Variablen aus äußeren Bereichen zu?

Barbara Streisand
Barbara StreisandOriginal
2024-11-09 03:36:02911Durchsuche

How to Access Variables from Outer Ranges in Go Templates?

Fehler: „Feld Feld iteriert in einer Go-Vorlage. Dies kann passieren, wenn Sie verschachtelte Bereiche haben und versuchen, auf eine Variable zuzugreifen, die in einem äußeren Bereich definiert ist.

Betrachten Sie beispielsweise das folgende Beispiel:

In der entsprechenden Vorlagendatei , versucht der folgende Code, innerhalb der Bereichsschleife auf die lang-Variable zuzugreifen:

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

func main() {
    users := []User{{"user1", []byte("password"), "user1@example.com"}, {"user2", []byte("password"), "user2@example.com"}}
    renderer.HTML(w, http.StatusOK, "users/index", map[string]interface{}{
        "lang":  "en",
        "users": users,
    })
}

Da lang jedoch kein Feld der Benutzerstruktur ist, löst die Vorlagen-Engine die aus oben erwähnter Fehler. Um dieses Problem zu beheben, können Sie die Variable $ verwenden, um auf den aktuellen Kontext zuzugreifen, der alle im äußeren Bereich definierten Variablen enthält. Der aktualisierte Vorlagencode würde so aussehen:

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

Dadurch wird korrekt auf die Lang-Variable zugegriffen und die gewünschte Ausgabe generiert.

Das obige ist der detaillierte Inhalt vonWie greife ich in Go-Vorlagen auf Variablen aus äußeren Bereichen 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