当我尝试使用Funcs和时,它注意到Go模板很奇怪FuncMap。以下代码按预期工作:
Funcs
FuncMap
buffer := bytes.NewBufferString("") funcMap := template.FuncMap{ "label": strings.Title, } t, _ := template.New("alex").Funcs(funcMap).Parse("{{label \"alex\"}}") t.Execute(buffer, "") return string(buffer.Bytes()) //=> "Alex"
但是,当我尝试将模板放在文件中时,它不起作用(Execute()说:)"alex" is an incomplete or empty template:
Execute()
"alex" is an incomplete or empty template
t, _ := template.New("alex").Funcs(funcMap).ParseFiles("template.html")
使用template.html:
{{label \"alex\"}}
知道为什么吗?这是一个错误吗?有没有更简单的方法在模板中使用方法/功能?
ParseFiles可能会使用更好的文档。一个模板对象可以包含多个模板,每个模板都有一个名称。如果查看ParseFiles的实现,则会看到它使用 文件名 作为模板对象内部的模板名称。因此,将文件的名称与模板对象的名称相同(可能通常不实用),或者使用ExecuteTemplate而不是Execute。