Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich die Go-Vorlagenausgabe in einer Variablen erfassen, anstatt sie auf STDOUT zu drucken?

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

DDD
DDDOriginal
2024-11-17 03:34:03750Durchsuche

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()

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()

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!

Stellungnahme:
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