Go テンプレート内で、目標は以下をエミュレートすることです:
{{$var := template "my-template"}}
ただし、このアプローチでは、「予期しない が見つかりません」というエラーが発生します。 operand."
Go には、テンプレートの実行結果をキャプチャするための組み込みメソッドが提供されていません。代わりに、このタスクを実行する関数を登録します。
関数を登録するには、Template.Funcs() 関数を使用します。 Template.ExecuteTemplate() で名前付きテンプレートを実行し、bytes.Buffer をターゲットとして使用して、テンプレートの直接実行結果をバッファにキャプチャします。
package main import ( "bytes" "html/template" "log" "os" ) 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 { log.Fatal(err) } } const tmpl = `{{define "my-template"}}my-template content{{end}} See result: {{$var := execTempl "my-template"}} {{$var}} `
登録された execTempl() 関数を使用して、「my-template」テンプレートを実行します。結果を $var テンプレート変数に保存し、出力に追加したり、他の関数に渡すことができます。
See result: my-template content
出力は「」の結果をキャプチャすることに注意してください。 my-template" テンプレートを作成し、メイン テンプレート内に表示します。
以上がGo テンプレートの出力をキャプチャして変数に割り当てる方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。