【问题标题】:How to know what the values passed in golang template?如何知道 golang 模板中传递的值是什么?
【发布时间】:2021-06-28 15:53:56
【问题描述】:

有没有办法通过只修改 golang 模板(不是渲染器,因为渲染器是第 3已经编译并运行的派对程序)?

情况是,我正在尝试正确打印prometheusalertmanager,但我得到的只是

Alerts Firing:
- :
- :
- :
- :

使用此模板:

*Alerts Firing:*
{{ range .Alerts.Firing }}- {{ .Annotations.identifier }}: {{ .Annotations.description }}
{{ end }}

有没有办法从. 获取所有可能的值?

【问题讨论】:

  • 您可以在模板中使用自定义函数,这样就够了吗?还是属于您所说的“渲染器”?或者您可以使用内置模板 func printf,但输出的格式不会像您想要的那样。
  • 要“快速”查看,只需使用{{ printf "%#v" .}}
  • 如果您不能使用自定义函数,另一种选择是在 . 值的类型上实现一个方法,该方法将返回一段与字段相关的信息。
  • 啊这可能就是我需要的{{printf "%#v" .}}

标签: go go-templates


【解决方案1】:

我的意思是仅仅看它,我想问题是.identifier.description 要么未导出,要么只需要以大写字母开头:

{{ range .Alerts.Firing }}- {{ .Annotations.identifier }}: {{ .Annotations.description }}

可能只是需要

{{ range .Alerts.Firing }}- {{ .Annotations.Identifier }}: {{ .Annotations.Description }}

或者它是一张地图,你只需要这样做:

{{ range .Alerts.Firing }}- {{ index .Annotations "identifier" }}: {{ index .Annotations "description" }}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-03
    • 2020-04-13
    • 1970-01-01
    • 2014-04-25
    • 2016-04-25
    • 2021-01-19
    • 2021-10-20
    相关资源
    最近更新 更多