在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中文網其他相關文章!