Maison  >  Article  >  développement back-end  >  Comment accéder aux champs de structure imbriqués dans les modèles HTML dans Go ?

Comment accéder aux champs de structure imbriqués dans les modèles HTML dans Go ?

Linda Hamilton
Linda Hamiltonoriginal
2024-10-24 07:46:30144parcourir

How to Access Nested Struct Fields in HTML Templates in Go?

Comment accéder aux champs de structure des éléments de carte dans les modèles HTML dans Go

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!

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