Go 模板:1:功能“;版权年“;未定义

Go 模板:1:功能“;版权年“;未定义,go,template-engine,Go,Template Engine,以下代码在tmp处出错。执行说明函数“版权年”未定义 import ( "os" "html/template" "fmt" ) func main() { fm := template.FuncMap{ "copyrightYear": func() string { return fmt.Sprintf("%d", time.Now().Year()) }, } tmp := templ

以下代码在
tmp处出错。执行
说明
函数“版权年”未定义

import (
    "os"
    "html/template"
    "fmt"
)

func main() {
    fm := template.FuncMap{
        "copyrightYear": func() string {
            return fmt.Sprintf("%d", time.Now().Year())
        },
    }
    tmp := template.Must(template.New("").Parse("{{copyrightYear}}")).Funcs(fm)
    tmp.Execute(os.Stdout, nil)
}
我错过了什么?我翻遍了文件。将其更改为模板中的
调用版权年
,或
版权年。
无法修复它

package main

import (
        "fmt"
        "html/template"
        "os"
        "time"
)

func main() {
        fm := template.FuncMap{
                "copyrightYear": func() string {
                        return fmt.Sprintf("%d", time.Now().Year())
                },
        }
        tmp := template.Must(template.New("").Funcs(fm).Parse("{{copyrightYear}}"))
        tmp.Execute(os.Stdout, nil)
}


输出:

2009

template.Funcs()返回的是副本而不是同一个对象吗?@ChristopherPfohl:解析模板时必须已定义函数。另一个顺序是“太晚了”;-)嗯…我想这是有道理的…我必须阅读来源。。。非常感谢。