So I am doing a simple if check on a bool from a struct but it doesn't seem to work, it just stop rendering the HTML.
So the following struct is like this:
type Category struct {
    ImageURL      string
    Title         string
    Description   string
    isOrientRight bool
}
Now I have a slice of that Category struct which I get to display with a range.
Bellow is an example of one struct:
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,
}
I've tried multiple ways, like below, but none of them worked:
{{range .Categories}}
    {{if .isOrientRight}}
       Hello
    {{end}}
    {{if eq .isOrientRight true}}
       Hello
    {{end}}
   <!-- Print nothing -->
   {{ printf .isOrientRight }} 
{{end}}
                You have to export all the fields you want to access from templates: change its first letter to capital I:
type Category struct {
    ImageURL      string
    Title         string
    Description   string
    IsOrientRight bool
}
And every reference to it:
{{range .Categories}}
    {{if .IsOrientRight}}
       Hello
    {{end}}
    {{if eq .IsOrientRight true}}
       Hello
    {{end}}
   <!-- Print nothing -->
   {{ printf .IsOrientRight }} 
{{end}}
Every unexported field can only be accessed from the declaring package. Your package declares the Category type, and text/template and html/template are different packages, so you need to export it if you want those packages to have access to it.
Template.Execute() returns an error, should you have stored / examined its return value, you would have found this out immediately, as you'd get an error similar to this one:
template: :2:9: executing "" at <.isOrientRight>: isOrientRight is an unexported field of struct type main.Category
See a working example of your code on the Go Playground.
If life inflicts templates on you which for some reason have lower-case variable names - perhaps constructed from a Pug template source that is also used for other things - there is a way around this issue...
You can use a map[string]interface{} to hold the values to be passed into the template, so in the example above:
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,
}
and now there is no need to change your template...
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With