Maison  >  Article  >  développement back-end  >  Comment transmettre des données aux modèles imbriqués dans le package « text/template » de Go ?

Comment transmettre des données aux modèles imbriqués dans le package « text/template » de Go ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-26 08:32:30383parcourir

 How to Pass Data to Nested Templates in Go's `text/template` Package?

Transmission de données entre les modèles Go

Dans le package texte/modèle de Go, il est possible d'imbriquer des modèles pour réutiliser des éléments HTML courants. Cependant, si vous devez transmettre des données supplémentaires à un fichier . modèle imbriqué, le mécanisme de modèle par défaut ne le prend pas en charge directement.

Pour y parvenir, vous pouvez créer une fonction personnalisée qui combine les arguments dans une tranche et la renvoie. Enregistrez cette fonction avec votre modèle, puis utilisez-la pour transmettre les arguments.

Voici un exemple :

package main

import (
    "text/template"
)

func main() {
    // Define the custom function to combine arguments
    func args(vs ...interface{}) []interface{} { return vs }

    // Parse the template with the custom function registered
    t, err := template.New("t").Funcs(template.FuncMap{"args": args}).Parse(...)
    if err != nil {
        // Handle error
    }

    // Render the template with the custom function
    t.ExecuteTemplate(..., template.Args(..., 5))

    // Access the arguments in the nested template
    {{ define "image_row" }}

       To stuff here {{index . 0}} {{index . 1}}

    {{ end }}
}

Avec cette approche, vous pouvez transmettre dynamiquement des données supplémentaires aux modèles imbriqués, ce qui permet code HTML plus flexible et réutilisable.

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