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

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

Linda Hamilton
Linda Hamiltonoriginal
2024-11-11 01:15:03466parcourir

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

Erreur du modèle Go : accès à un champ non structuré dans une boucle de plage

Dans les modèles HTML Go, l'accès aux champs qui ne font pas partie de la structure itérée dans une boucle de plage peut provoque l'erreur « Impossible d'évaluer le champ X dans le type Y ».

Pour résoudre ce problème, examinons un scénario dans lequel une structure utilisateur n'a pas le champ .lang mais le modèle doit y accéder.

Exemple de structure d'utilisateur :

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

Structure d'URL :

example.com/en/users

Code du modèle :

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

Erreur :

"Impossible d'évaluer la langue du champ dans le type Utilisateur"

Solution :

Pour accéder à .lang depuis la boucle, vous pouvez utiliser la variable $, à laquelle est attribuée la valeur du point (.) après l'exécution de 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 }}

En effet, selon la documentation du modèle Go, "$ est défini sur l'argument de données passé à Execute, c'est-à-dire sur la valeur de départ du point."

Par conséquent, la variable $ peut être utilisée pour accéder aux champs qui ne font pas partie de la structure itérée dans une boucle de plage.

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