问题内容
如何将 and
和 eq/ne
函数组合在一起?
我写了这个片段
{{ define "opsgenie.default.tmpl" }}
{{.commonlabels.alertname }}
{{- range $i, $alert := .alerts }}
{{ .annotations.description }}
{{- end -}}
{{- "\n" -}}
{{- "\n" -}}
{{- if and eq .commonlabels.infoalert "true" eq .commonlabels.topic "database" -}}
grafana: https://{{ .commonlabels.url }}
{{- "\n" -}}{{- end -}}
{{- if and ne .commonlabels.infoalert "true" eq .commonlabels.topic "database" -}}
database:
• https://{{ .commonlabels.url }}/
• https://{{ .commonlabels.url }}/
{{- "\n" -}}{{- end -}}
{{- end -}}
{{- end -}}
{{- end -}}
目标是:
- 如果我的警报包含两个标签
infoalert: true
和topic:database
则仅显示 grafana 链接 - 如果我的警报仅包含标签
topic: database
但不包含infoalert: true
则仅显示 databsse 链接
它看起来像条件 {{- if and eq .commonlabels.infoalert "true" eq .commonlabels.topic "database" -}}
的语法不正确,因为我在警报时在alertmanager.log中收到此错误被解雇:
notify retry canceled due to unrecoverable error after 1 attempts: templating error: template: email.tmpl:24:17: executing \"opsgenie.default.tmpl\" at : wrong number of args for eq: want at least 1 got 0
正确答案
只需使用括号对表达式进行分组:
{{- if and (eq .commonlabels.infoalert "true") (eq .commonlabels.topic "database") -}}
{{- if and (ne .commonlabels.infoalert "true") (eq .commonlabels.topic "database") -}}
查看这个可测试的示例:
func main() {
t := template.must(template.new("").parse(src))
m := map[string]any{
"infoalert": "true",
"topic": "database",
}
if err := t.execute(os.stdout, m); err != nil {
panic(err)
}
fmt.println("second round")
m["infoalert"] = "false"
if err := t.execute(os.stdout, m); err != nil {
panic(err)
}
}
const src = `
{{- if and (eq .infoalert "true") (eq .topic "database") -}}
infoalert is true and topic is database
{{- end -}}
{{- if and (ne .infoalert "true") (eq .topic "database") -}}
infoalert is not true and topic is database
{{ end }}
`
这将输出(在 go playground 上尝试):
infoalert is true and topic is database
Second round
infoalert is NOT true and topic is database
以上就是Go 模板 if 条件的详细内容,更多请关注编程网其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
软考中级精品资料免费领
- 历年真题答案解析
- 备考技巧名师总结
- 高频考点精准押题
- 资料下载
- 历年真题
193.9 KB下载数265
191.63 KB下载数245
143.91 KB下载数1148
183.71 KB下载数642
644.84 KB下载数2756
相关文章
发现更多好内容猜你喜欢
AI推送时光机Go 模板 if 条件
后端开发2024-02-06
Python IF 条件判断
后端开发2023-01-30
如何在go模板内部分配go模板的变量?
后端开发2024-02-05
Python学习-if条件语句
后端开发2023-01-30
cmd if条件的具体用法
后端开发2023-06-08
Css的if hack条件怎么用
后端开发2024-04-02
IE的css if条件怎么写
后端开发2024-04-02
python条件判断语句(if else)
后端开发2023-09-24
Go语言基础if条件语句用法及示例详解
后端开发2024-04-02
bash if条件判断的使用
后端开发2023-02-16
Python的流程控制 - if条件
后端开发2023-01-31
Shell脚本IF条件判断和判断条件总结
后端开发2022-06-04
mybatis中的多重if 条件判断
后端开发2024-04-02
JavaScript如何简写if执行条件
后端开发2024-04-02
vue 条件渲染v-if和v-show
后端开发2024-04-02
python中if多个条件如何写
后端开发2023-08-12
MySQL If 语句有多个条件吗?
后端开发2023-10-22
Css if hack条件语法有哪些
后端开发2024-04-02
咦!没有更多了?去看看其它编程学习网 内容吧