Maison >développement back-end >Golang >Comment accéder aux paramètres d'URL dans une boucle de plage de modèles dans Go ?

Comment accéder aux paramètres d'URL dans une boucle de plage de modèles dans Go ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-09 12:59:02936parcourir

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

Accès aux paramètres d'URL dans une boucle de plage de modèles

Lorsque vous travaillez avec des modèles Go, il est essentiel de comprendre comment les données sont accessibles dans les boucles. Considérez le code et le modèle suivants :

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

Dans ce scénario, vous pouvez rencontrer une erreur indiquant que le champ « lang » ne fait pas partie de la structure « Utilisateur ». Pour résoudre ce problème, nous pouvons exploiter le concept de « point » et la variable spéciale « $ ».

Comprendre Dot et $

Lorsqu'une boucle est invoquée, le le contenu du "point" (.) est affecté à la variable spéciale "$". Cela nous permet d'accéder aux données de l'extérieur de la boucle dans le bloc de plage. Par exemple, pour accéder au paramètre "lang", nous pouvons utiliser "$" comme suit :

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

Cette approche résout avec succès le problème, vous permettant d'accéder au paramètre "lang" dans la boucle de plage. Le comportement de "dot" et "$" est documenté dans le guide des modèles Go.

Approches alternatives

Si vous rencontrez des scénarios dans lesquels l'accès aux données à l'aide de "$" est difficile en raison des boucles imbriquées, envisagez des options alternatives telles que l'attribution d'un « point » à une variable temporaire ou l'utilisation de l'instruction « with » pour créer une portée dédiée à l'attribution de données.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn