Go でのテンプレート出力のキャプチャ
Go テンプレート内では、サブテンプレートの出力をキャプチャしたり、変数に直接割り当てたりすることができます。デフォルトではサポートされていません。ただし、これは、カスタム関数を登録し、バイト バッファを使用してテンプレートの結果を受信することで実現できます。
カスタム関数の登録
テンプレートの出力をキャプチャするには、登録します。テンプレート名を引数として受け取り、テンプレートの出力を文字列として返す Template.Funcs() を持つ関数:
func execTempl(name string) (string, error) { buf := &bytes.Buffer{} err := t.ExecuteTemplate(buf, name, nil) return buf.String(), err }
テンプレートの実行と結果のキャプチャ
Template.ExecuteTemplate() を使用して「my-template」という名前のサブテンプレートを実行し、変数に割り当てます:
{{$var := execTempl "my-template"}}
出力の取得
キャプチャされた出力を取得し、必要に応じて使用します:
See result: {{$var}}
完全な例
var t *template.Template 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
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3