Maison >développement back-end >Golang >Comment capturer la sortie du modèle Go dans une variable ?

Comment capturer la sortie du modèle Go dans une variable ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-23 04:47:15672parcourir

How to Capture Go Template Output into a Variable?

Capturer la sortie d'un modèle dans Go

Dans un modèle Go, il est impossible d'attribuer directement une sortie de modèle à une variable en utilisant la syntaxe {$ var := modèle}. Au lieu de cela, il est nécessaire d'enregistrer une fonction personnalisée pour capturer la sortie du modèle.

Enregistrement de fonction

Pour enregistrer une fonction, utilisez la fonction Template.Funcs(). Il vous permet de définir un ensemble de fonctions qui peuvent être utilisées dans votre modèle.

Exécution du modèle

Pour exécuter un modèle nommé et capturer sa sortie, utilisez Modèle. ExécuterTemplate(). Cette fonction prend un tampon comme cible, vous permettant d'écrire directement la sortie du modèle dans le tampon.

Exemple

Voici un exemple qui démontre l'utilisation d'un tampon enregistré. fonction pour capturer le modèle sortie :

package main

import (
    "bytes"
    "fmt"
    "text/template"
)

var t *template.Template

func execTempl(name string) (string, error) {
    buf := &bytes.Buffer{}
    err := t.ExecuteTemplate(buf, name, nil)
    return buf.String(), err
}

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

Dans cet exemple, la fonction execTempl() est enregistrée et utilisée dans le modèle pour exécuter le "my- template" et capturez sa sortie, qui est ensuite affectée à la variable de modèle $var et affichée dans la sortie.

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