Heim  >  Artikel  >  Backend-Entwicklung  >  Wie greife ich in Go auf URL-Parameter innerhalb einer Vorlagenbereichsschleife zu?

Wie greife ich in Go auf URL-Parameter innerhalb einer Vorlagenbereichsschleife zu?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-09 12:59:02879Durchsuche

How to Access URL Parameters Within a Template Range Loop in Go?

Zugriff auf URL-Parameter innerhalb einer Vorlagenbereichsschleife

Bei der Arbeit mit Go-Vorlagen ist es wichtig zu verstehen, wie innerhalb von Schleifen auf Daten zugegriffen werden kann. Betrachten Sie den folgenden Code und die folgende Vorlage:

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

func main() {
    users := []User{
        {Username: "Alice", Email: "alice@example.com"},
        {Username: "Bob", Email: "bob@example.com"},
    }

    renderer.HTML(w, http.StatusOK, "users/index", map[string]interface{}{
        "lang":  chi.URLParam(r, "lang"),
        "users": users,
    })
}
{{ range .users }}
  <form action="/{{ .lang }}/users" method="POST">
    <input type="text" name="Username" value="{{ .Username }}">
    <input type="text" name="Email" value="{{ .Email }}">
  </form>
{{ end }}

In diesem Szenario tritt möglicherweise ein Fehler auf, der darauf hinweist, dass das Feld „lang“ nicht Teil der Struktur „Benutzer“ ist. Um dieses Problem anzugehen, können wir das Konzept von „Punkt“ und die spezielle Variable „$“ nutzen.

Punkt und $ verstehen

Wenn eine Schleife aufgerufen wird, wird die Inhalte von „Punkt“ (.) werden der speziellen Variablen „$“ zugewiesen. Dies ermöglicht uns den Zugriff auf Daten von außerhalb der Schleife innerhalb des Bereichsblocks. Um beispielsweise auf den Parameter „lang“ zuzugreifen, können wir „$“ wie folgt verwenden:

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

Dieser Ansatz löst das Problem erfolgreich und ermöglicht Ihnen den Zugriff auf den Parameter „lang“ innerhalb der Bereichsschleife. Das Verhalten von „Punkt“ und „$“ ist im Go-Templating-Leitfaden dokumentiert.

Alternative Ansätze

Wenn Sie auf Szenarien stoßen, in denen der Zugriff auf Daten mit „$“ erfolgt Da dies aufgrund verschachtelter Schleifen eine Herausforderung darstellt, sollten Sie alternative Optionen in Betracht ziehen, z. B. die Zuweisung eines „Punkts“ zu einer temporären Variablen oder die Verwendung der „with“-Anweisung, um einen dedizierten Bereich für die Zuweisung von Daten zu erstellen.

Das obige ist der detaillierte Inhalt vonWie greife ich in Go auf URL-Parameter innerhalb einer Vorlagenbereichsschleife 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