Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Go Template memperoleh pembolehubah secara dinamik

Go Template memperoleh pembolehubah secara dinamik

PHPz
PHPzke hadapan
2024-02-05 23:36:041195semak imbas

Go Template 动态获取变量

Kandungan soalan

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 }}

Jawapan betul


Untuk mencapai apa yang anda mahukan anda perlu menyelesaikan 2 tugasan:

  • Gabungan rentetan
  • Mengindeks menggunakan nilai dinamik

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!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam