"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comment capturer et attribuer la sortie du modèle Go à une variable ?

Comment capturer et attribuer la sortie du modèle Go à une variable ?

Publié le 2024-12-22
Parcourir:509

How to Capture and Assign Go Template Output to a Variable?

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
Dernier tutoriel Plus>

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