猿问

模板和自定义功能;恐慌:功能未定义

使用html/template我试图在模板中使用我自己的功能之一。不幸的是,我无法使用 go 模板的函数映射功能。我得到的只是以下错误:


% go run test.go

panic: template: tmpl.html:5: function "humanSize" not defined

[...]

简化的测试用例如下 ( test.go):


package main


import (

    "html/template"

    "io/ioutil"

    "net/http"

    "strconv"

)


var funcMap = template.FuncMap{

    "humanSize": humanSize,

}

var tmplGet = template.Must(template.ParseFiles("tmpl.html")).Funcs(funcMap)


func humanSize(s int64) string {

    return strconv.FormatInt(s/int64(1000), 10) + " KB"

}


func getPageHandler(w http.ResponseWriter, r *http.Request) {

    files, _ := ioutil.ReadDir(".")

    if err := tmplGet.Execute(w, files); err != nil {

        http.Error(w, err.Error(), http.StatusInternalServerError)

    }

}


func main() {

    http.HandleFunc("/", getPageHandler)

    http.ListenAndServe(":8080", nil)

}

我有以下简单模板 ( tmpl.html):


<html><body>

    {{range .}}

    <div>

        <span>{{.Name}}</span>

        <span>{{humanSize .Size}}</span>

    </div>

    {{end}}

</body></html>

这是 1.1.1。


慕无忌1623718
浏览 197回答 1
1回答
随时随地看视频慕课网APP

相关分类

Go
我要回答