You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Helm Go Template中has函数匹配失效,如何修复以输出a:42?

问题原因

你误用了Helm Sprig函数库中的has函数——这个函数的作用是检查某个值是否是map的键,而非判断数组中是否包含某个元素。你的.Values.xs是数组类型,所以has 1 .Values.xs始终返回false,导致模板执行了else分支。

修复方案

要判断数组中是否包含指定元素,可使用Sprig的any函数结合eq表达式,只要数组中有任意一个元素满足等式条件就返回true。

修复后的values.yaml代码:

{{if (any (eq 1) .Values.xs)}}
a: 42
{{ else }}
b: 1
c: 2
{{ end }}

也可以用更显式的写法(效果完全一致):

{{if (any (func $v) (eq $v 1) .Values.xs)}}
a: 42
{{ else }}
b: 1
c: 2
{{ end }}
验证结果

当你的template.yaml中xs包含1时,模板会输出:

a: 42

内容的提问来源于stack exchange,提问作者Kevin Meredith

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 19:59:51