Rumah > pembangunan bahagian belakang > Golang > Mengapa Kelakuan Gelung Golang Berbeza Apabila Menggunakan Rujukan berbanding Salinan Pembolehubah Gelung?

Mengapa Kelakuan Gelung Golang Berbeza Apabila Menggunakan Rujukan berbanding Salinan Pembolehubah Gelung?

DDD
Lepaskan: 2024-12-29 01:05:10
asal
965 orang telah melayarinya

Why Does Golang's Loop Behavior Differ When Using References vs. Copies of Loop Variables?

Memahami Gelagat Berbeza dalam Golang: Kembali melalui Rujukan lwn. Salin

Isu

Dalam kod yang disediakan, dua variasi gelung mempamerkan gelagat berbeza apabila mengakses elemen daripada kepingan. Loop1 mengembalikan "kemas kini" berulang kali, manakala Loop2 mencetak urutan jangkaan "padam," "kemas kini" dan "buat."

Rujukan Pembolehubah Gelung

Kunci untuk memahami perbezaan ini terletak pada cara pembolehubah gelung (cmd) digunakan dalam penutupan (func()). Dalam Loop1, rujukan kepada pembolehubah gelung disimpan dalam penutupan. Ini bermakna bahawa sebarang perubahan seterusnya kepada cmd akan menjejaskan semua penutupan dalam peta.

Apabila gelung kedua dilaksanakan, nilai cmd telah pun dikemas kini kepada "kemas kini", elemen terakhir dalam kepingan cmds. Oleh itu, semua penutupan dalam peta merujuk kepada nilai terakhir ini, menghasilkan output "kemas kini" berulang.

Penyalinan Pembolehubah Gelung

Dalam Gelung2, walau bagaimanapun, salinan pembolehubah gelung ialah disimpan dalam penutup. Ini mencipta pembolehubah terpisah yang tidak terjejas oleh perubahan seterusnya kepada cmd asal. Setiap lelaran gelung memberikan nilai yang berbeza kepada cmd2, yang kemudiannya dirujuk oleh penutupan.

Hasilnya, gelung kedua mencetak dengan betul setiap elemen hirisan cmds.

Amalan Terbaik

Untuk mengelakkan isu rujukan sedemikian, biasanya disyorkan untuk menggunakan indeks hirisan dan bukannya pembolehubah gelung apabila mengakses elemen dalam penutupan. Dengan cara ini, setiap penutupan boleh mengakses elemen yang betul tanpa mengira perubahan pada pembolehubah gelung.

Kes Penggunaan untuk Elemen Dikembalikan

Nilai kedua yang dikembalikan oleh gelung julat (salinan elemen) boleh berguna apabila anda ingin menghantar nilai kepada goroutine atau utas yang berasingan tanpa perlu risau tentang akses serentak kepada pembolehubah asal. Ini memudahkan tugasan yang memerlukan perkongsian data tanpa rasa takut merosakkan sumber.

Atas ialah kandungan terperinci Mengapa Kelakuan Gelung Golang Berbeza Apabila Menggunakan Rujukan berbanding Salinan Pembolehubah Gelung?. 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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan