Maison >développement back-end >Golang >Comment attribuer la sortie du modèle Golang à une variable ?
Dans Go, vous pouvez définir et exécuter des modèles qui peuvent générer dynamiquement du HTML ou d'autres formats de texte. On peut vouloir capturer la sortie d'un modèle et l'attribuer à une variable.
Ceci n'est pas directement possible en utilisant le langage de modèles intégré de Go. Tenter de le faire, comme dans l'exemple suivant, entraînera une erreur " inattendue dans l'opérande" :
{{$var := template "my-template"}}
Pour contourner cette limitation, vous pouvez vous inscrire une fonction personnalisée qui récupère la sortie du modèle. Voici comment procéder :
var t *template.Template // execTempl retrieves the output of a named template. func execTempl(name string) (string, error) { buf := &bytes.Buffer{} // Create a buffer to store the template output. err := t.ExecuteTemplate(buf, name, nil) // Execute the template into the buffer. return buf.String(), err }
t = template.Must(template.New("").Funcs(template.FuncMap{ "execTempl": execTempl, }).Parse(tmpl))
if err := t.Execute(os.Stdout, nil); err != nil { panic(err) }
Dans votre modèle, vous pouvez utiliser le fonction "execTempl" enregistrée pour récupérer la sortie d'un modèle nommé et l'attribuer à une variable :
const tmpl = `{{define "my-template"}}my-template content{{end}} See result: {{$var := execTempl "my-template"}} {{$var}} `
Voici un exemple complet qui démontre l'utilisation de cette technique :
package main import ( "bytes" "fmt" "os" "text/template" ) const tmpl = `{{define "my-template"}}my-template content{{end}} See result: {{$var := execTempl "my-template"}} {{$var}} ` func main() { execTempl := func(name string) (string, error) { buf := &bytes.Buffer{} err := t.ExecuteTemplate(buf, name, nil) return buf.String(), err } t := template.Must(template.New("").Funcs(template.FuncMap{ "execTempl": execTempl, }).Parse(tmpl)) if err := t.Execute(os.Stdout, nil); err != nil { fmt.Println(err) } }
L'exécution du programme ci-dessus produira le résultat suivant :
See result: my-template content
En utilisant cette technique, vous peut capturer la sortie de modèles arbitraires et la stocker dans des variables pour un traitement ou une présentation ultérieure.
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!