Go的模板支持自定义函数

/ go / 没有评论 / 1689浏览

Go的模板支持自定义函数

func f1(w http.ResponseWriter, r *http.Request) {
    //定义一个函数smile
    //这个函数要么只有一个返回值,要么有俩返回值且第二个返回值必须是error类型
    smile := func (name string)(string, error) {
        return name + "you make me smile!", nil
    }

    t := template.New("f.tmpl") //创建一个名字是f的模板对象

    // 告诉模板引擎 我现在有一个自定义的函数smile  注意自定义函数必须在解析模板之前
    t.Funcs(template.FuncMap{
        "smile": smile,
    })

    //解析模板
    _, err := t.ParseFiles("./f.tmpl")
    if err != nil {
        fmt.Printf("parse template failed, err:%v\n", err)
        return
    }

    name := "夜愿"
    t.Execute(w, name)
}

func main() {
    http.HandleFunc("/", f1)
    err := http.ListenAndServe(":9090", nil)
    if err != nil {
        fmt.Println("Http server failed, err:", err)
        return
    }
}