我有这个代码用于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}}
答案 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上尝试。