3 回答
TA贡献1890条经验 获得超9个赞
{{if not .}}
output when . is nil or otherwise empty including
false, 0, and any array, slice, map, or string of length zero
{{else if eq .MetaValue "some-x"}}
// some-x case
{{else}}
// other case
{{end}}
TA贡献1155条经验 获得超0个赞
如果您想确保您只检查nil而不是检查0, false, 空字符串或任何其他虚假类型,您可以使用该kindIs函数来完成此操作。
{{ if kindIs "invalid" . }}
// only if variable is literally nil. falsey values will fallthrough.
{{ else if eq .MetaValue "some-x" }}
// other
{{ else }}
// final case, if any
{{ end }}
TA贡献1790条经验 获得超9个赞
我最近遇到了在 Helm Chart(使用 Go 模板,包括sprig)中识别 nil 与 0 值的问题,并且没有找到任何已发布的解决方案,所以我想我会在这里添加我的。
我想出了一种丑陋的解决方案,即引用该值,然后检查与“<nil>”匹配的字符串(带引号,因此您实际上是在检查 (quote .Values.thing | eq "\" <nil>\""))。这允许区分针对空值和定义的 0 值的测试。在我的例子中,我试图构建一个配置文件,其中一些默认选项不是 0,所以当 0 被显式设置时,我想知道 0 被设置而不是被省略。
希望这可以对其他人有所帮助。
有更好的方法来做到这一点会很好,但到目前为止我还没有发现任何不需要创建和添加我自己的模板函数的东西。
- 3 回答
- 0 关注
- 217 浏览
添加回答
举报