Maison  >  Article  >  développement back-end  >  Package de modèles de Golang : de l'entrée à l'avancée

Package de modèles de Golang : de l'entrée à l'avancée

WBOY
WBOYoriginal
2023-07-17 16:01:361555parcourir

Package de modèles de Golang : de l'entrée à l'avancé

Introduction :
Golang est un langage de programmation puissant et flexible, et son package de modèles (package Template) est une partie importante de sa bibliothèque standard. En utilisant des packages de modèles, nous pouvons combiner des données et des modèles pour générer diverses formes de sortie de texte. Cet article présentera les connaissances de base du package de modèles de Golang et fournira quelques exemples utiles pour aider les lecteurs à mieux comprendre et utiliser le package. De l'entrée à l'avancée, explorons ensemble le package de modèles de Golang.

1. Notions de base des modèles
1.1 Syntaxe du modèle
Le package de modèles de Golang utilise une syntaxe de modèle concise et flexible, ce qui rend l'écriture et la modification de modèles très pratiques. Voici quelques éléments de syntaxe de modèle couramment utilisés :

  1. Expressions : en utilisant des doubles accolades {{ }}, nous pouvons intégrer des expressions, telles que des variables, des appels de fonction, etc., dans des modèles. Par exemple : {{.Name}} représente la valeur de la variable de sortie Name.
  2. Jugement conditionnel : nous pouvons utiliser {{if .Condition}}...{{else}}...{{end}} pour implémenter le jugement conditionnel. Par exemple : {{if .Age >= 18}}Adulte{{else}}Mineur{{end}}.
  3. Itération de boucle : grâce à la syntaxe de {{range .Slice}}...{{end}}, nous pouvons effectuer une itération de boucle sur une tranche. Par exemple : {{range .Users}}Bonjour, {{.Name}} !{{end}}.
  4. Commentaires : utilisez {{/ ... /}} pour ajouter des commentaires dans le modèle, par exemple : {{/ Ceci est un commentaire /}}.

1.2 Définition et analyse du modèle
Dans Golang, nous pouvons utiliser template.New(name string) template.Template fonction pour créer un nouveau modèle, puis transmettre template.Parse(str string) (template.Template, erreur ) la fonction analyse un modèle sous forme de chaîne. Par exemple :

import "text/template"

tpl := template.New("example")
tpl, err := tpl.Parse("Hello, {{.Name}}!")

2. Utilisez le package de modèles
2.1 Générer une sortie texte basée sur le modèle
Une fois le modèle défini et analysé, nous pouvons utiliser la fonction d'erreur Execute(wr io.Writer, data interface{}) pour appliquer le modèle à des données spécifiques et générer une sortie de texte. Parmi eux, wr représente la cible de sortie (telle qu'une sortie standard, un fichier, etc.) et data représente les données requises par le modèle. Par exemple :

type Person struct {
    Name string
}

func main() {
    tpl := template.New("example")
    tpl, _ = tpl.Parse("Hello, {{.Name}}!")

    p := Person{Name: "John"}
    tpl.Execute(os.Stdout, p)
}

Le résultat de sortie est : Bonjour, John !.

2.2 Utilisation des fonctions de modèle
Dans les modèles, nous pouvons appeler des fonctions de modèle via la syntaxe {{function arg1 arg2...}}. Le package de modèles de Golang fournit déjà certaines fonctions de modèle couramment utilisées, telles que len, slice, index, etc. De plus, nous pouvons également personnaliser les fonctions du modèle. Par exemple, nous pouvons définir une fonction modèle qui convertit une chaîne en majuscule.

import "strings"

func upper(str string) string {
    return strings.ToUpper(str)
}

func main() {
    tpl := template.New("example")
    tpl = tpl.Funcs(template.FuncMap{"upper": upper})
    tpl, _ = tpl.Parse("Hello, {{.Name | upper}}!")

    p := Person{Name: "John"}
    tpl.Execute(os.Stdout, p)
}

Le résultat de sortie est : Bonjour, JOHN !.

2.3 Modèles imbriqués
Dans un modèle, nous pouvons utiliser la syntaxe {{template name}} pour appeler d'autres modèles. Cette méthode nous permet de réutiliser des modèles. Par exemple, nous pouvons créer un modèle appelé message, puis l'appeler dans d'autres modèles.

tpl, _ := tpl.Parse(`
    {{define "message"}}Hello, {{.Name}}!{{end}}
    {{define "body"}}{{template "message" .}}{{end}}
    {{template "body" .}}
`)

Le résultat de sortie est : Bonjour, John !.

3. Application avancée
Le package de modèles est très flexible, nous pouvons l'utiliser pour générer diverses formes de sortie, telles que HTML, JSON, XML, etc. Dans ces applications, nous devons souvent gérer des interactions complexes entre les données et les modèles. Voici un exemple de génération d'un tableau HTML :

type User struct {
    Name  string
    Email string
}

type UsersPage struct {
    Title string
    Users []User
}

func main() {
    tpl := template.New("example")
    tpl, _ = tpl.Parse(`
        <html>
        <head>
            <title>{{.Title}}</title>
        </head>
        <body>
            <table>
                <tr>
                    <th>Name</th>
                    <th>Email</th>
                </tr>
                {{range .Users}}
                <tr>
                    <td>{{.Name}}</td>
                    <td>{{.Email}}</td>
                </tr>
                {{end}}
            </table>
        </body>
        </html>
    `)

    users := []User{
        {Name: "John", Email: "john@example.com"},
        {Name: "Emily", Email: "emily@example.com"},
    }

    page := UsersPage{Title: "User List", Users: users}
    tpl.Execute(os.Stdout, page)
}

Le résultat de sortie est :

<html>
<head>
    <title>User List</title>
</head>
<body>
    <table>
        <tr>
            <th>Name</th>
            <th>Email</th>
        </tr>
        <tr>
            <td>John</td>
            <td>john@example.com</td>
        </tr>
        <tr>
            <td>Emily</td>
            <td>emily@example.com</td>
        </tr>
    </table>
</body>
</html>

Conclusion :
Grâce à l'exemple ci-dessus, nous pouvons constater que le package de modèles de Golang (package Template) est un outil très puissant et flexible. en utilisant le package de modèles, nous pouvons facilement générer diverses formes de sortie de texte. Qu'il s'agisse d'un simple remplacement de chaîne ou d'une génération HTML complexe, le package de modèles peut répondre à nos besoins. J'espère que l'introduction de cet article aidera tout le monde à mieux comprendre et utiliser le package de modèles de Golang. Créons ensemble plus de possibilités dans le monde des modèles !

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