2 回答
TA贡献1828条经验 获得超3个赞
您必须导出要从模板访问的所有字段:将其第一个字母更改为大写I:
type Category struct {
ImageURL string
Title string
Description string
IsOrientRight bool
}
以及对它的每一个引用:
{{range .Categories}}
{{if .IsOrientRight}}
Hello
{{end}}
{{if eq .IsOrientRight true}}
Hello
{{end}}
<!-- Print nothing -->
{{ printf .IsOrientRight }}
{{end}}
每个未导出的字段只能从声明包中访问。您的包声明了Category类型,text/template并且html/template是不同的包,因此如果您希望这些包可以访问它,则需要导出它。
Template.Execute()返回一个错误,如果您已经存储/检查了它的返回值,您会立即发现这一点,因为您会收到与此类似的错误:
模板::2:9:在 <.isOrientRight> 处执行“”:isOrientRight 是结构类型 main.Category 的未导出字段
在Go Playground上查看您的代码的工作示例。
TA贡献1921条经验 获得超9个赞
如果生活对您施加了模板,由于某种原因具有小写变量名 - 可能是由 Pug 模板源构建的,也用于其他事情 - 有一种方法可以解决这个问题......
您可以使用 amap[string]interface{}来保存要传递到模板中的值,因此在上面的示例中:
juiceCategory := map[string]interface{}{
"ImageURL": "lemon.png",
"Title": "Juices and Mixes",
"Description": `Explore our wide assortment of juices and mixes expected by
today's lemonade stand clientelle. Now featuring a full line of
organic juices that are guaranteed to be obtained from trees that
have never been treated with pesticides or artificial
fertilizers.`,
"isOrientRight": true,
}
现在无需更改您的模板...
- 2 回答
- 0 关注
- 101 浏览
添加回答
举报