有這個沒有內置。您可以添加創建地圖的功能和使用,在子模板:
func argsfn(kvs ...interface{}) (map[string]interface{}, error) {
if len(kvs)%2 != 0 {
return nil, errors.New("args requires even number of arguments.")
}
m := make(map[string]interface{})
for i := 0; i < len(kvs); i += 2 {
s, ok := kvs[i].(string)
if !ok {
return nil, errors.New("even args to args must be strings.")
}
m[s] = kvs[i+1]
}
return m, nil
}
功能將它添加到模板是這樣的:
t := template.Must(template.New("").Funcs(template.FuncMap{"args": argsfn}).Parse(......
使用方法如下:
{{template "image_row" args "row" . "a" 5}}{{end}}
{{define "image_row"}}
{{$.row}} {{$.a}}
{{end}}
Run it in the playground
使用地圖的優點是參數是「na MED」。在另一個答案中描述的使用切片的優點是代碼更簡單。
請澄清:你的問題是關於'text/template'?因爲'text/tempate'允許嵌套的模板定義。 – Ingaz