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) }
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.
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!