在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