Maison > développement back-end > Golang > 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
Libérer: 2024-10-24 07:46:30
original
227 Les gens l'ont consulté

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>
Copier après la connexion
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion
Copier après la connexion

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>
Copier après la connexion
Copier après la connexion

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>
Copier après la connexion
Copier après la connexion

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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal