如果值已设置且为 false,则转到模板

我正在使用使用 Go 模板的Listmonk 。我有一种情况,用户状态 ( .Subscriber.Attribs.Pro) 的变量可能存在(如果存在,它是trueor false。我只想在值存在时显示一个文本块。


Pro如果设置了属性,我的代码就可以工作。但是,如果未设置,它将被处理为not ''导致 的值true。


{{ if not .Subscriber.Attribs.Pro }}

  You are not a Pro user!

{{ end }}

Pro仅当属性显式设置为时,如何运行此代码false


catspeake
浏览 125回答 2
2回答

守着一只汪

所以基本上你只想显示文本 if .Subscriber.Attribs.Prois 提供和 is false。所以做一个比较:{{ if eq false .Subscriber.Attribs.Pro }}    You are not a Pro user!{{ end }}我们可以像这样测试它:t := template.Must(template.New("").Parse("{{ if eq false .Pro }}You are not a Pro user!\n{{ end }}"))fmt.Println("Doesn't exist:")if err := t.Execute(os.Stdout, nil); err != nil {    panic(err)}fmt.Println("Pro is false:")m := map[string]interface{}{    "Pro": false,}if err := t.Execute(os.Stdout, m); err != nil {    panic(err)}fmt.Println("Pro is true:")m["Pro"] = trueif err := t.Execute(os.Stdout, m); err != nil {    panic(err)}输出将是(在Go Playground上尝试):Doesn't exist:Pro is false:You are not a Pro user!Pro is true:如您所见,块的主体仅在显式设置为{{if}}时才会执行。Profalse

萧十郎

使用附带的Sprig hasKey 函数:{{if hasKey .Subscriber.Attribs "Pro"}}    {{ if not .Subscriber.Attribs.Pro }}        You are not a Pro user!     {{ end }}{{ end }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go