Erfassen der Vorlagenausgabe in Go
Innerhalb einer Go-Vorlage ist es möglich, die Ausgabe einer Untervorlage zu erfassen oder sie direkt einer Variablen zuzuweisen wird standardmäßig nicht unterstützt. Dies kann jedoch erreicht werden, indem eine benutzerdefinierte Funktion registriert und ein Bytepuffer verwendet wird, um das Ergebnis der Vorlage zu empfangen.
Registrierung benutzerdefinierter Funktionen
Um die Vorlagenausgabe zu erfassen, registrieren Sie sich eine Funktion mit Template.Funcs(), die den Vorlagennamen als Argument verwendet und die Ausgabe der Vorlage als Zeichenfolge zurückgibt:
func execTempl(name string) (string, error) { buf := &bytes.Buffer{} err := t.ExecuteTemplate(buf, name, nil) return buf.String(), err }
Vorlagenausführung und Ergebniserfassung
Führen Sie die Untervorlage mit dem Namen „my-template“ mit Template.ExecuteTemplate() aus und weisen Sie sie einer Variablen zu:
{{$var := execTempl "my-template"}}
Ausgabeabruf
Rufen Sie die erfasste Ausgabe ab und verwenden Sie sie nach Bedarf:
See result: {{$var}}
Vollständiges Beispiel
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}} `
Ausgabe:
See result: my-template content
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3