Capturer la sortie d'un modèle dans Go
Dans un modèle Go, capturer la sortie d'un sous-modèle ou l'attribuer directement à une variable est non pris en charge par défaut. Ceci peut toutefois être réalisé en enregistrant une fonction personnalisée et en utilisant un tampon d'octets pour recevoir le résultat du modèle.
Enregistrement de fonction personnalisée
Pour capturer la sortie du modèle, enregistrez une fonction avec Template.Funcs() qui prend le nom du modèle comme argument et renvoie la sortie du modèle sous forme de chaîne :
func execTempl(name string) (string, error) { buf := &bytes.Buffer{} err := t.ExecuteTemplate(buf, name, nil) return buf.String(), err }
Exécution du modèle et capture des résultats
Exécutez le sous-modèle nommé 'my-template' à l'aide de Template.ExecuteTemplate() et affectez-le à une variable :
{{$var := execTempl "my-template"}}
Sortie Récupération
Récupérez la sortie capturée et utilisez-la si nécessaire :
See result: {{$var}}
Exemple complet
var t *template.Template func main() { t = template.Must(template.New("").Funcs(template.FuncMap{ "execTempl": execTempl, }).Parse(tmpl)) if err := t.Execute(os.Stdout, nil); err != nil { panic(err) } } const tmpl = ` {{define "my-template"}}my-template content{{end}} See result: {{$var := execTempl "my-template"}} {{$var}} `
Sortie :
See result: my-template content
Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.
Copyright© 2022 湘ICP备2022001581号-3