我的 yml 參數看起來像
nodes: one, two instanceminone: 1 instancemaxone: 2 instancemintwo: 4 instancemaxtwo: 6
有沒有方法可以使用go模板動態讀取例如instanceminone,其中變數名稱由instancemin
來自節點清單的動態值組成?
類似的東西(這顯然不起作用,但只是給出了我想要實現的目標的想法)
{{ - range $nodeName := (split .Parameters.nodes) } } } } instance-min: {{ .Parameters.instanceMin$nodeName }} instance-max: {{ .Parameters.instanceMan$nodeName }} {{ - end }}
要實現您想要的目標,您必須解決 2 個任務:
對於連接,您可以使用內建的 print
函數,例如
{{ $key := print "instancemin" $nodename }}
對於索引,請使用內建的 index
函數:
instance-min: {{ index $.parameters $key }}
(注意:{{range}}
操作會更改點,因此在其中您需要 $
來引用循環變數外部。)
或一行:
instance-min: {{ index $.parameters (print "instancemin" $nodename) }}
查看可運行的示範:
func main() { t := template.must(template.new("").parse(src)) params := map[string]any{ "parameters": map[string]any{ "nodes": []string{"one", "two"}, "instanceminone": 1, "instancemaxone": 2, "instancemintwo": 4, "instancemaxtwo": 6, }, } if err := t.execute(os.stdout, params); err != nil { panic(err) } } const src = `{{- range $idx, $nodename := .parameters.nodes }} instance-min: {{ index $.parameters (print "instancemin" $nodename) }} instance-max: {{ index $.parameters (print "instancemax" $nodename) }} {{- end }}`
這將輸出(在 go playground 上嘗試):
instance-min: 1 instance-max: 2 instance-min: 4 instance-max: 6
以上是Go Template 動態取得變數的詳細內容。更多資訊請關注PHP中文網其他相關文章!