Vous souhaitez accéder aux champs d'une structure stockée dans une carte à l'aide du Package html/template dans Go.
Les modèles Go par défaut n'autorisent pas l'accès aux champs non exportés d'une structure. Pour activer cela, vous devez exporter les champs en mettant en majuscule la première lettre de leurs noms.
Définir la structure avec les champs exportés :
<code class="go">type Task struct { cmd string args []string Desc string // Note the capital "D" }</code>
Initialiser la carte avec les structures exportées :
<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>
Analyser et exécuter le modèle :
<code class="go">func listHandle(w http.ResponseWriter, r *http.Request) { t, _ := template.ParseFiles("index.tmpl") t.Execute(w, taskMap) }</code>
Fichier modèle :
<code class="go"><html> {{range $key, $value := .}} <li>Task Name: {{$key}}</li> <li>Task Value: {{$value}}</li> <li>Task description: {{$value.Desc}}</li> {{end}} </html></code>
Le modèle pourra désormais accéder aux champs exportés de la structure Task dans la carte :
<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>
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!