Dalam kod ini, kami mencipta dua gelung untuk (gelung1 dan gelung2) yang berulang pada sekeping rentetan (cmds). Walau bagaimanapun, output yang terhasil daripada gelung ini berbeza.
Dalam gelung1, selepas lelaran melalui cmd, peta (tindakan) dicipta di mana setiap arahan dipetakan ke fungsi yang mencetak arahan. Apabila fungsi ini dilaksanakan, kesemuanya mencetak "kemas kini", yang merupakan elemen terakhir dalam cmd.
Dalam gelung2, pendekatan yang serupa diambil, tetapi bukannya menyimpan rujukan arahan langsung dalam peta tindakan, salinan arahan dibuat menggunakan indeksnya. Ini memastikan bahawa setiap fungsi mempunyai salinan arahannya sendiri, menghalang output "kemas kini" yang tidak dijangka daripada gelung1.
Tingkah laku pelik dalam gelung1 berlaku disebabkan oleh cara penutupan (fungsi disimpan dalam peta tindakan) pembolehubah gelung rujukan.
Dengan membuat salinan pembolehubah gelung untuk setiap fungsi (seperti yang dilakukan dalam gelung2), setiap fungsi mempunyai pembolehubah terpencil sendiri yang tidak dipengaruhi oleh lelaran gelung seterusnya.
Contoh ini menyerlahkan kepentingan skop pembolehubah dalam Golang dan perbezaan antara pembolehubah gelung dan pembolehubah tertanggal yang dicipta melalui penyalinan. Apabila bekerja dengan penutupan yang merujuk pembolehubah gelung, adalah penting untuk memastikan salinan dibuat untuk mengelakkan tingkah laku yang tidak dijangka akibat penggunaan semula yang berubah-ubah.
Atas ialah kandungan terperinci Mengapa Golang's For Loops Menghasilkan Output Berbeza Apabila Menggunakan Penutupan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!