Wie kann ich die Go-Vorlagenausgabe in einer Variablen erfassen, anstatt sie auf STDOUT zu drucken?

DDD
Freigeben: 2024-11-17 03:34:03
Original
752 Leute haben es durchsucht

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

Vorlagenausgabe einer Variablen neu zuweisen

In Go bieten Vorlagen eine praktische Möglichkeit, benutzerdefinierte Ausgaben zu generieren. Standardmäßig wird die Ausgabe mit t.Execute(os.Stdout, xxx) auf der Standardausgabe (STDOUT) gedruckt. Es kann jedoch vorkommen, dass Sie die Ausgabe stattdessen lieber einer Variablen zuweisen möchten.

Um dies zu erreichen, ist es wichtig zu bedenken, dass t.Execute eine Eingabe erwartet, die die io.Writer-Schnittstelle implementiert. Eine geeignete Option ist die Verwendung eines Puffers, z. B. eines bytes.Buffer oder eines strings.Builder.

Verwendung eines bytes.Buffer:

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

result := tpl.String()
Nach dem Login kopieren

Dieser Code erstellt a bytes.Buffer und übergibt seine Adresse an t.Execute. Wenn die Vorlagenausführung erfolgreich ist, wird die Ausgabe im Puffer gespeichert, die dann mit tpl.String() als String abgerufen werden kann.

Mit einem strings.Builder:

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

Der strings.Builder bietet eine speziellere Alternative. Ähnlich wie beim vorherigen Ansatz wird der Builder als io.Writer an t.Execute übergeben und die Ausgabe wird im Builder gesammelt. Die builder.String()-Methode kann dann verwendet werden, um die Ausgabe als String abzurufen.

Das obige ist der detaillierte Inhalt vonWie kann ich die Go-Vorlagenausgabe in einer Variablen erfassen, anstatt sie auf STDOUT zu drucken?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage