In Go können Sie Vorlagen definieren und ausführen, die dynamisch HTML oder andere Textformate generieren können. Möglicherweise möchten Sie die Ausgabe einer Vorlage erfassen und einer Variablen zuweisen.
Dies ist mit der integrierten Vorlagensprache von Go nicht direkt möglich. Der Versuch, dies zu tun, wie im folgenden Beispiel, führt zu einem „unerwarteten in operand“-Fehler:
{{$var := template "my-template"}}
Um diese Einschränkung zu umgehen, können Sie sich registrieren eine benutzerdefinierte Funktion, die die Vorlagenausgabe abruft. So geht's:
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) }
In Ihrer Vorlage können Sie Verwenden Sie die registrierte Funktion „execTempl“, um die Ausgabe einer benannten Vorlage abzurufen und sie einer Variablen zuzuweisen:
const tmpl = `{{define "my-template"}}my-template content{{end}} See result: {{$var := execTempl "my-template"}} {{$var}} `
Hier ist ein vollständiges Beispiel, das die Verwendung dieser Technik demonstriert :
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) } }
Das Ausführen des obigen Programms erzeugt die folgende Ausgabe:
See result: my-template content
Indem Sie dies verwenden Mit dieser Technik können Sie die Ausgabe beliebiger Vorlagen erfassen und zur weiteren Verarbeitung oder Präsentation in Variablen speichern.
Das obige ist der detaillierte Inhalt vonWie ordne ich die Golang-Vorlagenausgabe einer Variablen zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!