一尘不染

简单,如果不行就去模板

go

因此,我正在做一个简单的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}}

阅读 158

收藏
2020-07-02

共1个答案

一尘不染

您必须从模板导出要访问的所有字段:将其首字母更改为大写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/templatehtml/template有不同的包,所以你需要出口,如果你想这些软件包能够访问它。

Template.Execute()
返回一个错误,如果您已经存储/检查了它的返回值,那么您将立即发现此错误,因为您将收到与此错误类似的错误:

模板::2:9:在<.isOrientRight>处执行“”:isOrientRight是结构类型为main的未导出字段。

Go
Playground
查看代码的工作示例。

2020-07-02