Maison >développement back-end >Golang >Comment puis-je utiliser efficacement les boucles for dans les modèles Go ?

Comment puis-je utiliser efficacement les boucles for dans les modèles Go ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-31 12:28:13178parcourir

How can I use for loops effectively in Go templates?

Boucles For dans les modèles

Les modèles dans Go offrent un moyen puissant de générer du contenu dynamique. Une exigence courante lorsque l’on travaille avec des modèles est le besoin de boucles. Cet article explique comment implémenter des boucles for dans des modèles.

Utiliser Range avec un tableau préparé

Le moyen le plus simple de créer une boucle dans un modèle consiste à utiliser le mot-clé range avec un tableau préparé. Par exemple, considérons le code suivant :

<code class="go">type Person struct {
    Name string
    Age  int
}

func main() {
    people := []Person{{"John", 30}, {"Mary", 25}}
    tmpl := template.Must(template.New("loop").Parse(`
        {{range .}}
            Name: {{.Name}}
            Age:  {{.Age}}
        {{end}}
    `))
    tmpl.Execute(os.Stdout, people)
}</code>

Ce modèle parcourra la tranche de personnes et imprimera le nom et l'âge de chaque personne.

Utilisation d'une fonction externe

Une autre approche consiste à utiliser une fonction externe pour créer une boucle. Cela peut être utile lorsque vous avez besoin de plus de flexibilité ou de fonctionnalités dans votre boucle. Par exemple, la fonction suivante peut générer une simple boucle for :

<code class="go">func For(start, end int) chan int {
    c := make(chan int)
    go func() {
        for i := start; i < end; i++ {
            c <- i
        }
        close(c)
    }()
    return c
}</code>

Cette fonction prend un point de début et de fin et renvoie un canal qui parcourt chaque entier de la plage. Pour utiliser cette fonction dans un modèle, vous pouvez procéder comme suit :

<code class="go">tmpl := template.Must(template.New("loop").Parse(`
        {{range For 0 10}}
            i: {{.}}
        {{end}}
    `))
tmpl.Execute(os.Stdout, nil)</code>

Ce modèle itérera de 0 à 9 et imprimera la valeur de i pour chaque itération.

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