J’ai cette structure:
type Site struct { Name ssortingng Pages []int }
Je passe une instance de Site
à un modèle .
Si je veux écrire une liste de toutes les pages, je le fais
{{range .Pages}} https://stackoverflow.com/questions/16734503/access-out-of-loop-value-inside-golang-templates-loop/{{.}} {{end}}
Maintenant, quelle est la manière la plus simple d’utiliser le champ Name
à l’intérieur de la boucle (par exemple pour changer le href
en Name/page
)?
Notez qu’une solution basée sur le fait que l’object externe est le global qui a été transmis au modèle serait OK.
Vous devez savoir que la variable transmise au modèle est disponible sous la forme $
.
{{range .Pages}} {{.}} {{end}}
(Voir la documentation sur les textes / modèles sous “Variables”.)
Qu’en est-il de:
{{$name := .Name}} {{range $page := .Pages}} {{$page}} {{end}}
Ou simplement faire de Pages
une carte avec Nom comme valeur?
type Site struct { Pages map[ssortingng]ssortingng } {{range $page, $name := .Pages}} {{$page}} {{end}}
Il semble qu’il n’y ait pas de solution plus simple que de déclarer explicitement une variable pour l’object externe (ou ses propriétés):
{{$out := .}} {{range .Pages}} {{.}} {{end}}
EDIT: cette réponse n’est plus la bonne, regardez plutôt celle de Chowey.