Maison >développement back-end >Golang >Comment transmettre des modèles de fonctions à emporter ?

Comment transmettre des modèles de fonctions à emporter ?

Patricia Arquette
Patricia Arquetteoriginal
2024-12-26 13:15:19235parcourir

How to Pass Functions to Go Templates?

Modèles Golang : transmission de fonctions aux modèles

Problème :

Lors de la tentative de transmission d'un fonction à un modèle, l'erreur suivante est rencontré :

Error: template: struct.tpl:3: function "makeGoName" not defined

Solution :

Pour résoudre cette erreur, les fonctions personnalisées doivent être enregistrées avant d'analyser les modèles. Les modèles sont conçus pour une analyse statique, exigeant que l'analyseur soit capable de distinguer les noms de fonctions valides des autres identifiants.

Au lieu d'utiliser template.ParseFiles(), utilisez la méthode Template.ParseFiles(), disponible après appelant template.New(). Cette méthode enregistre les fonctions avant d'analyser le modèle.

Code amélioré :

t, err := template.New("struct.tpl").Funcs(template.FuncMap{
    "makeGoName": makeGoName,
    "makeDBName": makeDBName,
}).ParseFiles("templates/struct.tpl")

De plus, la méthode Template.Execute() renvoie une erreur. Pour observer tout problème potentiel avec la génération de sortie, gérez cette erreur :

if err := t.Execute(os.Stdout, data); err != nil {
    fmt.Println(err)
}

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