【发布时间】:2013-02-08 04:47:36
【问题描述】:
我不明白为什么func (t *Template) Parsefiles(... 的行为与func ParseFiles(... 不同。这两个函数都来自“html/template”包。
package example
import (
"html/template"
"io/ioutil"
"testing"
)
func MakeTemplate1(path string) *template.Template {
return template.Must(template.ParseFiles(path))
}
func MakeTemplate2(path string) *template.Template {
return template.Must(template.New("test").ParseFiles(path))
}
func TestExecute1(t *testing.T) {
tmpl := MakeTemplate1("template.html")
err := tmpl.Execute(ioutil.Discard, "content")
if err != nil {
t.Error(err)
}
}
func TestExecute2(t *testing.T) {
tmpl := MakeTemplate2("template.html")
err := tmpl.Execute(ioutil.Discard, "content")
if err != nil {
t.Error(err)
}
}
退出并出现错误:
--- FAIL: TestExecute2 (0.00 seconds)
parse_test.go:34: html/template:test: "test" is an incomplete or empty template
FAIL
exit status 1
请注意,TestExecute1 可以正常通过,所以 template.html 没有问题。
这是怎么回事?
我在MakeTemplate2 中缺少什么?
【问题讨论】:
标签: go go-templates