"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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 ?

Publié le 2024-11-17
Parcourir:777

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 à partir d'éléments de carte dans des modèles HTML à l'aide de l'outil html/ package de modèles dans Go.

Considérez la structure de tâche suivante :

type Task struct {
   Cmd string
   Args []string
   Desc string
}

De plus, une carte est initialisée avec des structures de tâches comme valeurs et des chaînes comme clés :

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",
    },
}

Maintenant, examinons le problème en question. Un modèle est utilisé pour analyser une page HTML :

func listHandle(w http.ResponseWriter, r *http.Request){
    t, _ := template.ParseFiles("index.tmpl")
    t.Execute(w, taskMap)
}

L'extrait de code suivant représente le modèle index.tmpl :


{{range $key, $value := .}}
   
  • Task Name: {{$key}}
  • Task Value: {{$value}}
  • Task description: {{$value.Desc}}
  • {{end}}

    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'export des champs auxquels vous souhaitez accéder au sein des modèles. Ceci peut être réalisé en mettant en majuscule la première lettre des noms de champs :

    type Task struct {
       Cmd string
       Args []string
       Desc string
    }

    Par conséquent, les références aux noms de champs dans le modèle doivent également être en majuscules :

    
    {{range $key, $value := .}}
       
  • Task Name: {{$key}}
  • Task Value: {{$value}}
  • Task description: {{$value.Desc}}
  • {{end}}

    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.

    Déclaration de sortie Cet article est réimprimé à l'adresse : 1729726421. En cas d'infraction, veuillez contacter [email protected] pour le supprimer.
    Dernier tutoriel Plus>

    Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

    Copyright© 2022 湘ICP备2022001581号-3