我无法使用以下语法/步骤将自定义函数传递给HTML模板:
t, err := template.ParseFiles("name.tpl")
if err != nil {
return
}
err = t.Funcs(template.FuncMap{"add": add}).Execute(w, nil)
if err != nil {
return
}
...
...
...
func add(a int8, b int8) int8 {
return a + b
}
所需的功能是
add
,在编译过程中没有错误,但是在尝试呈现HTML模板时出现错误function "add" not defined
。我想念什么?附言请不要提供其他解析模板的方法,例如
template.New...
等。我希望使用此语法。 最佳答案
使用此功能:
func parseFiles(funcs template.FuncMap, filenames ...string) (*template.Template, error) {
return template.New(filepath.Base(filenames[0])).Funcs(funcs).ParseFiles(filenames...)
}
这样称呼它:
t, err := parseFiles(template.FuncMap{"add": add}, "name.tpl")
if err != nil {
return
}
err = t.Execute(w, nil)
Run it on the Go Playground。
关于templates - HTML模板中的未定义函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57115847/