IIRC,必须
.Funcs在解析模板之前定义模板功能图。下面的代码似乎有效。
package mainimport ( "html/template" "io/ioutil" "net/http" "strconv")var funcMap = template.FuncMap{ "humanSize": humanSize,}const tmpl = `<html><body> {{range .}} <div> <span>{{.Name}}</span> <span>{{humanSize .Size}}</span> </div> {{end}}</body></html>`var tmplGet = template.Must(template.New("").Funcs(funcMap).Parse(tmpl))func humanSize(s int64) string { return strconv.FormatInt(s/int64(1000), 10) + " KB"}func getPageHandler(w http.ResponseWriter, r *http.Request) { files, err := ioutil.ReadDir(".") if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } if err := tmplGet.Execute(w, files); err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) }}func main() { http.HandleFunc("/", getPageHandler) http.ListenAndServe(":8080", nil)}


