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 サイトの他の関連記事を参照してください。