Cet article aborde le problème de la récupération des champs de structure des éléments de carte dans les modèles HTML à l'aide de l'outil html/ package de modèles dans Go.
Considérez la structure de tâche suivante :
<code class="go">type Task struct { Cmd string Args []string Desc string }</code>
De plus, une carte est initialisée avec des structures de tâche comme valeurs et des chaînes comme clés :
<code class="go">var taskMap = map[string]Task{ "find": Task{ Cmd: "find", Args: []string{"/tmp/"}, Desc: "find files in /tmp dir", }, "grep": Task{ Cmd: "grep", Args:[]string{"foo","/tmp/*", "-R"}, Desc: "grep files match having foo", }, }</code>
Maintenant, examinons le problème en question. Un modèle est utilisé pour analyser une page HTML :
<code class="go">func listHandle(w http.ResponseWriter, r *http.Request){ t, _ := template.ParseFiles("index.tmpl") t.Execute(w, taskMap) }</code>
L'extrait de code suivant représente le modèle index.tmpl :
<code class="html"><html> {{range $key, $value := .}} <li>Task Name: {{$key}}</li> <li>Task Value: {{$value}}</li> <li>Task description: {{$value.Desc}}</li> {{end}} </html></code>
Cette approche génère avec succès les clés et les valeurs de la carte, mais les tentatives d'accès aux champs de tâches dans le modèle, par exemple en utilisant {{$value.Desc}}, entraînent des erreurs.
La solution réside dans l'exportation des champs auxquels vous souhaitez accéder dans les modèles. Ceci peut être réalisé en mettant en majuscule la première lettre des noms de champs :
<code class="go">type Task struct { Cmd string Args []string Desc string }</code>
Par conséquent, les références aux noms de champs dans le modèle doivent également être en majuscule :
<code class="html"><html> {{range $key, $value := .}} <li>Task Name: {{$key}}</li> <li>Task Value: {{$value}}</li> <li>Task description: {{$value.Desc}}</li> {{end}} </html></code>
En suivant ces étapes , vous pouvez récupérer et afficher avec succès le champ Desc de chaque tâche dans le modèle.
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!