ホームページ >バックエンド開発 >Golang >Go テンプレートの出力を STDOUT に出力する代わりに変数にキャプチャするにはどうすればよいですか?

Go テンプレートの出力を STDOUT に出力する代わりに変数にキャプチャするにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-17 03:34:03808ブラウズ

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

テンプレート出力を変数に再代入する

Go では、テンプレートを使用してカスタム出力を生成する便利な方法が提供されます。デフォルトでは、出力は t.Execute(os.Stdout, xxx) を使用して標準出力 (STDOUT) に出力されます。ただし、代わりに出力を変数に割り当てたい場合もあります。

これを実現するには、t.Execute が io.Writer インターフェイスを実装する入力を期待していることを覚えておくことが重要です。適切なオプションの 1 つは、bytes.Buffer や strings.Builder などのバッファーを利用することです。

bytes.Buffer を使用する:

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

result := tpl.String()

このコードでは、 bytes.Buffer を取得し、そのアドレスを t.Execute に渡します。テンプレートの実行が成功すると、出力はバッファーに保存され、tpl.String().

Using a strings.Builder:

builder := &strings.Builder{}
if err := t.Execute(builder, data); err != nil {
    return err
}
result := builder.String()
strings.Builder は、より特殊な代替手段を提供します。前のアプローチと同様に、ビルダーは io.Writer として t.Execute に渡され、出力はビルダーに収集されます。 builder.String() メソッドを使用して、出力を文字列として取得できます。

以上がGo テンプレートの出力を STDOUT に出力する代わりに変数にキャプチャするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。