Maison  >  Article  >  développement back-end  >  Comment accéder aux champs structurels des éléments de carte dans les modèles HTML à l'aide du package html/template de Go ?

Comment accéder aux champs structurels des éléments de carte dans les modèles HTML à l'aide du package html/template de Go ?

DDD
DDDoriginal
2024-10-24 07:34:30255parcourir

How to Access Struct Fields of Map Elements in HTML Templates Using Go's html/template Package?

Récupération du champ Struct de l'élément de carte dans le package Go HTML/Template

Situation :

Vous avez une structure et une carte utilisant la structure comme valeur. Vous souhaitez accéder aux champs de la structure dans une page HTML rendue à l'aide du package html/template.

Solution :

Pour activer l'accès aux champs de la structure dans le modèle, ils doivent être exportés. L'exportation d'un champ implique de commencer son nom par une lettre majuscule.

Explication détaillée :

<code class="go">type Task struct {
   cmd string
   args []string
   Desc string // Exported field
}</code>

Remarquez le « D » majuscule dans Desc.

De même, mettez à jour les références de la carte et du modèle :

<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>
<code class="html">{{range $key, $value := .}}
   <li>Task Name:        {{$key}}</li>
   <li>Task Value:       {{$value}}</li>
   <li>Task description: {{$value.Desc}}</li>
{{end}}</code>

Résultats :

La sortie contiendra le champ Desc pour chaque tâche :

<code class="html"><html>

<li>Task Name:        find</li>
<li>Task Value:       {find [/tmp/] find files in /tmp dir}</li>
<li>Task description: find files in /tmp dir</li>

<li>Task Name:        grep</li>
<li>Task Value:       {grep [foo /tmp/* -R] grep files match having foo}</li>
<li>Task description: grep files match having foo</li>

</html></code>

Remarque : Cette solution exporte la structure entière, pensez donc à utiliser une fonction de modèle définie si vous n'avez besoin que de champs spécifiques.

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