为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
catspeake 2022-10-24 15:08:28
我正在使用使用 Go 模板的Listmonk 。我有一种情况,用户状态 ( .Subscriber.Attribs.Pro) 的变量可能存在(如果存在,它是trueor false。我只想在值存在时显示一个文本块。Pro如果设置了属性,我的代码就可以工作。但是,如果未设置,它将被处理为not ''导致 的值true。{{ if not .Subscriber.Attribs.Pro }}  You are not a Pro user!{{ end }}Pro仅当属性显式设置为时,如何运行此代码false
查看完整描述

2 回答

?
守着一只汪

TA贡献1872条经验 获得超3个赞

所以基本上你只想显示文本 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"] = true

if 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


查看完整回答
反对 回复 2022-10-24
?
萧十郎

TA贡献1815条经验 获得超13个赞

使用附带的Sprig hasKey 函数:


{{if hasKey .Subscriber.Attribs "Pro"}}

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

        You are not a Pro user!

     {{ end }}

{{ end }}


查看完整回答
反对 回复 2022-10-24
  • 2 回答
  • 0 关注
  • 124 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信