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

Go Template memperoleh pembolehubah secara dinamik

PHPz
Lepaskan: 2024-02-05 23:36:04
ke hadapan
1334 orang telah melayarinya

Go Template 动态获取变量

Kandungan soalan

Parameter yml saya kelihatan seperti

nodes: one, two
instanceminone: 1
instancemaxone: 2
instancemintwo: 4
instancemaxtwo: 6
Salin selepas log masuk

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 }}
Salin selepas log masuk


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 }}
Salin selepas log masuk

Untuk pengindeksan, gunakan fungsi index terbina dalam:

instance-min: {{ index $.parameters $key }}
Salin selepas log masuk

(Nota: {{range}} 操作会更改点,因此在其中您需要 $ untuk merujuk kepada bahagian luar pembolehubah gelung.)

atau satu baris:

instance-min: {{ index $.parameters (print "instancemin" $nodename) }}
Salin selepas log masuk

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 }}`
Salin selepas log masuk

Ini akan menghasilkan (cuba di pergi taman permainan):

instance-min: 1
instance-max: 2
instance-min: 4
instance-max: 6
Salin selepas log masuk

Atas ialah kandungan terperinci Go Template memperoleh pembolehubah secara dinamik. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan