Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah saya boleh mengakses pembolehubah dari skop luar dalam pernyataan 'dengan' atau 'julat' bersarang dalam templat Go?

Bagaimanakah saya boleh mengakses pembolehubah dari skop luar dalam pernyataan 'dengan' atau 'julat' bersarang dalam templat Go?

DDD
DDDasal
2024-11-24 10:57:10806semak imbas

How can I access variables from the outer scope in nested

Mengakses Skop Luar dalam Skop "dengan" atau "julat" Bersarang dalam Templat Go

Templat In Go, penggunaan "dengan" atau pernyataan "julat" mencipta skop baharu, mengubah konteks skop semasa. Ini boleh membawa kepada situasi di mana akses kepada pembolehubah yang ditakrifkan dalam skop luar menjadi perlu.

Menggunakan $. OuterValue

Untuk mengekalkan akses kepada skop panggilan dalam skop "dengan" atau "julat" bersarang, pembolehubah yang ditakrifkan khas dipanggil "$" digunakan. Pembolehubah ini disediakan oleh enjin templat Go dan menghalakan kembali ke nilai data yang telah dihantar ke fungsi Laksanakan, yang mewakili nilai titik awal (.).

Contoh Penggunaan

Pertimbangkan kod templat berikut:

{{with .Inner}}
  Outer: {{$.OuterValue}}
  Inner: {{.InnerValue}}
{{end}}

Dalam contoh ini, pernyataan "dengan" mentakrifkan skop baharu untuk pembolehubah "Dalam". Walau bagaimanapun, dalam skop ini, mengakses "OuterValue" yang ditakrifkan dalam skop luar boleh dicapai menggunakan "$.OuterValue."

Dokumentasi $

Templat Go dokumentasi secara eksplisit menerangkan peranan "$" seperti berikut:

"Apabila pelaksanaan bermula, $ ditetapkan kepada argumen data yang diserahkan kepada Laksanakan, iaitu, kepada nilai permulaan titik."

Penjelasan ini mengesahkan bahawa "$" mengekalkan rujukan kepada data asal yang dihantar kepada templat, membenarkan akses kepada pembolehubah skop asal.

Atas ialah kandungan terperinci Bagaimanakah saya boleh mengakses pembolehubah dari skop luar dalam pernyataan 'dengan' atau 'julat' bersarang dalam templat Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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