„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Wie kann ich die Go-Vorlagenausgabe erfassen und einer Variablen zuweisen?

Wie kann ich die Go-Vorlagenausgabe erfassen und einer Variablen zuweisen?

Veröffentlicht am 22.12.2024
Durchsuche:710

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

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
Neuestes Tutorial Mehr>

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