在我的模板中,我使用了一個生成一段輸出的子模板。但是模板輸出必須移動(因為輸出是 YAML 格式)。是否有可能對模板輸出進行后處理?
{{ template "subtemplate" | indent 10 }}
這indent 10是虛構的,只是為了解釋我需要什么。
可以(如@icza 建議的那樣)將輸出保存到變數中然后使用它,但也許有更好、更優雅的方法?
{{$var := execTempl "subtemplate"}}
{{$var}}
uj5u.com熱心網友回復:
最接近的{{ template "subtemplate" | indent 10 }}是定義一個函式來決議和執行subtemplate并將結果作為字串輸出。
var externalTemplates = map[string]*template.Template{
"subtemplate": template.Must(template.New("subtemplate").Parse(sub_template)),
}
// Executes external template, must be registered with FuncMap in the main template.
func xtemplate(name string) (string, error) {
var b bytes.Buffer
if err := externalTemplates[name].ExecuteTemplate(&b, name, nil); err != nil {
return "", err
}
return b.String(), nil
}
t := template.Must(template.New("t").Funcs(template.FuncMap{
"xtemplate": xtemplate, // register func
}).Parse(main_template))
在主模板中,您可以使用如下函式:
{{ xtemplate "subtemplate" | indent 10 }}
https://play.golang.org/p/brolOLFT4xL
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/331237.html
