Bagaimanakah saya boleh Mengakses Skop Luar dalam Templat Bersarang dalam Go?

Mary-Kate Olsen
Lepaskan: 2024-11-15 11:38:02
asal
654 orang telah melayarinya

How can I Access the Outer Scope within Nested Templates in Go?

Mengakses Skop Luar dalam Templat Bersarang

Apabila bekerja dengan templat bersarang dalam Go, mengakses skop luar dari dalam "dengan" atau " julat" boleh menimbulkan cabaran kerana skop pembolehubah titik (.) yang diubah. Untuk menangani perkara ini, pembolehubah khas $ boleh digunakan untuk mengakses skop panggilan.

Pertimbangkan contoh berikut:

type MyData struct {
  OuterValue string
  InnerValue string
}

func main() {
  data := MyData{OuterValue: "Outer Value", InnerValue: "Inner Value"}
  template.Must(template.New("example").Parse("{{with .Inner}} Outer: {{$.OuterValue}}, Inner: {{.InnerValue}} {{end}}")).Execute(writer, data)
}
Salin selepas log masuk

Dalam contoh ini, skop "dengan" mengubah skop pembolehubah titik (.) untuk merujuk kepada nilai "Dalam" struct MyData. Walau bagaimanapun, kami masih perlu mengakses "OuterValue" dari dalam skop "dengan".

Untuk mencapai ini, kami menggunakan pembolehubah $. $ mewakili hujah data yang dihantar ke templat semasa pelaksanaan, yang sama dengan nilai permulaan pembolehubah titik (.). Dengan menggunakan $, kami boleh mengakses skop panggilan dari dalam skop "dengan" atau "julat" bersarang.

Kod berikut menunjukkan penggunaan $:

$ is documented in the text/template docs:

> When execution begins, $ is set to the data argument passed to Execute, that is, to the starting value of dot.
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimanakah saya boleh Mengakses Skop Luar dalam Templat Bersarang dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan