Rumah >pembangunan bahagian belakang >Golang >Go Template memperoleh pembolehubah secara dinamik
Parameter yml saya kelihatan seperti
nodes: one, two instanceminone: 1 instancemaxone: 2 instancemintwo: 4 instancemaxtwo: 6
Adakah terdapat cara untuk membaca secara dinamik cth. instanceminone menggunakan templat go, dengan nama pembolehubah terdiri daripada instancemin
+ nilai dinamik daripada senarai nod?
Sesuatu seperti ini (ini jelas tidak berkesan tetapi hanya memberi gambaran tentang apa yang saya ingin capai)
{{ - range $nodeName := (split .Parameters.nodes) } } } } instance-min: {{ .Parameters.instanceMin$nodeName }} instance-max: {{ .Parameters.instanceMan$nodeName }} {{ - end }}
Untuk mencapai apa yang anda mahukan anda perlu menyelesaikan 2 tugasan:
Untuk penggabungan anda boleh menggunakan fungsi print
terbina dalam seperti
{{ $key := print "instancemin" $nodename }}
Untuk pengindeksan, gunakan fungsi index
terbina dalam:
instance-min: {{ index $.parameters $key }}
(Nota: {{range}}
操作会更改点,因此在其中您需要 $
untuk merujuk kepada bahagian luar pembolehubah gelung.)
atau satu baris:
instance-min: {{ index $.parameters (print "instancemin" $nodename) }}
Lihat demo yang berfungsi:
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 }}`
Ini akan menghasilkan (cuba di pergi taman permainan):
instance-min: 1 instance-max: 2 instance-min: 4 instance-max: 6
Atas ialah kandungan terperinci Go Template memperoleh pembolehubah secara dinamik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!