Maison  >  Article  >  développement back-end  >  Comment puis-je capturer la sortie du modèle Go dans une variable au lieu de l'imprimer sur STDOUT ?

Comment puis-je capturer la sortie du modèle Go dans une variable au lieu de l'imprimer sur STDOUT ?

DDD
DDDoriginal
2024-11-17 03:34:03745parcourir

How Can I Capture Go Template Output into a Variable Instead of Printing to STDOUT?

Réaffectation de la sortie du modèle à une variable

Dans Go, les modèles constituent un moyen pratique de générer une sortie personnalisée. Par défaut, la sortie est imprimée sur la sortie standard (STDOUT) à l'aide de t.Execute(os.Stdout, xxx). Cependant, il peut y avoir des cas où vous préférez attribuer la sortie à une variable.

Pour ce faire, il est essentiel de se rappeler que t.Execute attend une entrée qui implémente l'interface io.Writer. Une option appropriée consiste à utiliser un tampon, tel qu'un bytes.Buffer ou un string.Builder.

Utilisation d'un bytes.Buffer :

var tpl bytes.Buffer
if err := t.Execute(&tpl, data); err != nil {
    return err
}

result := tpl.String()

Ce code crée un bytes.Buffer et transmet son adresse à t.Execute. Si l'exécution du modèle réussit, la sortie est stockée dans le tampon, qui peut ensuite être récupérée sous forme de chaîne à l'aide de tpl.String().

À l'aide d'un strings.Builder :

builder := &strings.Builder{}
if err := t.Execute(builder, data); err != nil {
    return err
}
result := builder.String()

Le strings.Builder propose une alternative plus spécialisée. Semblable à l'approche précédente, le constructeur est transmis à t.Execute en tant que io.Writer et la sortie est collectée dans le constructeur. La méthode builder.String() peut ensuite être utilisée pour récupérer la sortie sous forme de chaîne.

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