因此,我正在做一个简单的if检查结构中的布尔变量,但似乎不起作用,只是停止呈现HTML。
所以下面的结构是这样的:
type Category struct { ImageURL string Title string Description string isOrientRight bool }
现在,我可以显示一个带有类别的Category结构。
贝娄是一个结构的例子:
juiceCategory := Category{ 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, }
我已经尝试了多种方法,如下所示,但是它们都不起作用:
{{range .Categories}} {{if .isOrientRight}} Hello {{end}} {{if eq .isOrientRight true}} Hello {{end}} <!-- Print nothing --> {{ printf .isOrientRight }} {{end}}
您必须从模板导出要访问的所有字段:将其首字母更改为大写I:
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有不同的包,所以你需要出口,如果你想这些软件包能够访问它。
Category
text/template
html/template
Template.Execute() 返回一个错误,如果您已经存储/检查了它的返回值,那么您将立即发现此错误,因为您将收到与此错误类似的错误:
Template.Execute()
模板::2:9:在<.isOrientRight>处执行“”:isOrientRight是结构类型为main的未导出字段。
在Go Playground上查看代码的工作示例。