我有以下 yaml
items:
- itemName: a
awesome: true
- itemName: b
- itemName: c
awesome: false
我需要一個a作為輸出的函式,因為 itema具有屬性awesome == true. 我怎么做?
行不通的方法:
{{- $result := "nope" }}
{{- range $i := $items }}
{{- if and (and (hasKey $i. awesome) ($i.awesome)) !($result -eq "nope") }}
{{- $result := $i.itemName }}
{{- end }}
{{- end }}
尚未嘗試過上述方法,但我確信這不起作用(請參閱此帖子)。我需要的是一個適用于串列的默認函式。我在sprig 中找不到任何東西。任何的想法?
uj5u.com熱心網友回復:
鏈接的post,根據您聲稱您知道代碼不起作用,在問題片段中沒有預先宣告變數。
在您的代碼中,您確實預先宣告了變數,但您犯了不同的錯誤。錯誤是您正在使用:=將值分配給預先宣告的變數,但是:=在模板中的作業方式與 Go 本身相同,它初始化一個新變數。您需要=用于分配給現有變數。
https://pkg.go.dev/text/[email protected]#hdr-Variables
動作內部的管道可以初始化一個變數來捕獲結果。初始化有語法
$variable := pipeline
$variable變數名在哪里。宣告變數的操作不會產生輸出。之前宣告的變數也可以賦值,使用語法
$variable = pipeline
因此,您需要做的就是更改{{- $result := $i.itemName }}為{{- $result = $i.itemName }}.
{{- $result := "nope" }}
{{- range $i := $items }}
{{- if and (and (hasKey $i. awesome) ($i.awesome)) !($result -eq "nope") }}
{{- $result = $i.itemName }}
{{- end }}
{{- end }}
證明這是有效的一個例子:https : //play.golang.org/p/A44yl7jo0v7
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/326450.html
標籤:走 模板 kubernetes-helm 默认 模板
上一篇:模板成員函式語法
