golang html模板没有显示任何内容

时间:2015-04-08 20:26:29

标签: html templates go

我有这个代码用于html / template,它不会运行。我想显示数组中的每个元素,它将不返回任何内容。请忽略ioutil文件读取。

type Person struct {
    Name string
    Age int
}

type Page struct {
    test [3]Person
    test2 string
}

func main() {
    var a [3]Person
    a[0] = Person{Name: "test", Age: 20}
    a[1] = Person{Name: "test", Age: 20}
    a[2] = Person{Name: "test", Age: 20}

    p:= Page{test: a}

    c, _ := ioutil.ReadFile("welcome.html")    
    s := string(c)

    t := template.New("")
    t, _ = t.Parse(s)
    t.Execute(os.Stdout, p)
}

和welcome.html:

{{range .test}}
    item
{{end}}

1 个答案:

答案 0 :(得分:3)

不导出Page.test字段,它以小写字母开头。模板引擎(就像其他所有内容一样)只能访问导出的字段。

将其更改为:

type Page struct {
    Test [3]Person
    Test2 string
}

以及您引用它的所有其他地方,例如p:= Page{Test: a}。还有模板:

{{range .Test}}
    item
{{end}}

并且:永远不会忽略检查错误!至少你可以做的是恐慌:

c, err := ioutil.ReadFile("welcome.html") 
if err != nil {
    panic(err)
}
s := string(c)

t := template.New("")
t, err = t.Parse(s)
if err != nil {
    panic(err)
}
err = t.Execute(os.Stdout, p)
if err != nil {
    panic(err)
}

Go Playground上尝试。