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

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

Susan Sarandon
リリース: 2024-12-23 04:47:15
オリジナル
713 人が閲覧しました

How to Capture Go Template Output into a Variable?

Go でのテンプレート出力のキャプチャ

Go テンプレート内では、構文 {$ を使用してテンプレート出力を変数に直接割り当てることはできません。 var := テンプレート}。代わりに、テンプレート出力をキャプチャするカスタム関数を登録する必要があります。

関数の登録

関数を登録するには、Template.Funcs() 関数を使用します。テンプレート内で使用できる一連の関数を定義できます。

テンプレートの実行

名前付きテンプレートを実行してその出力をキャプチャするには、テンプレートを使用します。 Template()を実行します。この関数はターゲットとしてバッファーを受け取るため、テンプレート出力をバッファーに直接書き込むことができます。

これは、登録済みのテンプレートをキャプチャする機能出力:

package main

import (
    "bytes"
    "fmt"
    "text/template"
)

var t *template.Template

func execTempl(name string) (string, error) {
    buf := &bytes.Buffer{}
    err := t.ExecuteTemplate(buf, name, nil)
    return buf.String(), err
}

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}}
`
ログイン後にコピー

出力:

See result:

my-template content
ログイン後にコピー

この例では、execTempl() 関数が登録され、テンプレート内で使用されて「my- template" テンプレートを使用してその出力をキャプチャし、$var テンプレート変数に割り当てて出力に表示します。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート