Maison  >  Article  >  développement back-end  >  Comment accéder aux champs non structurés dans les modèles Go dans les boucles de plage ?

Comment accéder aux champs non structurés dans les modèles Go dans les boucles de plage ?

DDD
DDDoriginal
2024-11-09 01:00:02798parcourir

How to Access Non-Struct Fields in Go Templates Within Range Loops?

Accès aux champs non structurés dans les modèles Go dans les boucles de plage

Lors de l'itération sur une tranche de structures dans un modèle Go à l'aide de {{ range}}, vous pouvez rencontrer une erreur si vous tentez d'accéder à un champ qui ne fait pas directement partie de la structure. Par exemple, considérons l'exemple suivant :

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

Dans le modèle HTML, vous pouvez rencontrer l'erreur suivante lorsque vous essayez d'accéder au champ {{ .lang }} :

`got template: can't evaluate field X in type Y (X not part of Y but stuck in a {{range}} loop)`

Cette erreur se produit car le champ {{ .lang }} ne fait pas partie de la structure User. Pour résoudre ce problème, vous pouvez utiliser la variable $, qui fait référence aux données attribuées à {{ . }} suite à l'invocation de la boucle {{range}}.

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

Conformément à la documentation du modèle Go, lorsque la boucle {{range}} commence l'exécution, la variable $ est automatiquement définie sur les données argument passé au modèle. Dans ce cas, l'argument data est une carte qui inclut la clé lang. Par conséquent, vous pouvez utiliser $ pour accéder à la valeur de langue dans la boucle.

Si vous avez besoin d'accéder à plusieurs champs non-struct dans des boucles imbriquées, vous pouvez également utiliser l'instruction with ou les instructions d'affectation de variable pour attribuer {{ . }} à une variable différente.

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