Maison > développement back-end > Golang > Comment accéder au pipeline parent/global dans l'action de plage des modèles Go ?

Comment accéder au pipeline parent/global dans l'action de plage des modèles Go ?

Barbara Streisand
Libérer: 2024-11-10 18:34:02
original
262 Les gens l'ont consulté

How to Access the Parent/Global Pipeline in Go Templates' Range Action?

Accès au pipeline parent/global dans l'action de plage des modèles Go

Dans le package texte/modèle de Go, la possibilité d'accéder aux pipelines avant un l’action de plage ou le pipeline parent/global est essentiel. Prenons l'exemple suivant :

const page = `{{range .Files}}<script src="{{html .Path}}/js/{{html .}}"></script>{{end}}`

type scriptFiles struct {
    Path string
    Files []string
}

func main() {
    t := template.New("page")
    t = template.Must(t.Parse(page))

    t.Execute(os.Stdout, &scriptFiles{"/var/www", []string{"go.js", "lang.js"}})
}
Copier après la connexion

Dans cet exemple, l'accès à .Path ne sera pas possible dans l'action de plage car .dot se transforme en l'élément Files actuel.

Recommandé Solution - Utilisation de la variable $

Selon la documentation du package texte/modèle, la variable $ contient l'argument de données transmis à Execute, qui est la valeur initiale de .dot. Ainsi, pour accéder au chemin de la portée externe à l'aide de $.Path dans l'action de plage, utilisez la variante suivante :

const page = `{{range .Files}}<script src="{{html $.Path}}/js/{{html .}}"></script>{{end}}`
Copier après la connexion

Solution alternative - Variable personnalisée

Avant l'action de plage, une variable personnalisée peut être définie pour transmettre une valeur dans la portée de la plage. Par exemple :

const page = `{{$p := .Path}}{{range .Files}}<script src="{{html $p}}/js/{{html .}}"></script>{{end}}`
Copier après la connexion

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 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