以下在tmp.Execute上的代码恐慌说function "copyrightYear" not defined

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)
}

我想念什么?我仔细阅读了文档。在模板中将其更改为call copyrightYearcopyrightYear .不能修复它。

最佳答案

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)
}

Playground

输出:
2009

10-06 10:42