Menghentikan Pelaksanaan For Loop Secara Luaran dalam Go
Dalam Go, anda mungkin menghadapi senario di mana anda perlu menamatkan pelaksanaan gelung for dari luar skopnya. Sebagai contoh, anda mungkin mempunyai gelung jangka panjang yang perlu diganggu apabila syarat tertentu dipenuhi.
Untuk mencapai ini, anda boleh memanfaatkan saluran isyarat. Begini cara ia berfungsi:
Mencipta Saluran Isyarat
<code class="go">quit := make(chan struct{}{})</code>
Barisan ini mencipta saluran dengan struct kosong sebagai jenis nilainya. Ia akan digunakan untuk menandakan gelung berhenti.
Menutup Saluran
Dalam goroutine yang menjalankan gelung, anda boleh menggunakan fungsi tutup untuk menutup saluran isyarat apabila syarat yang diingini dipenuhi:
<code class="go">if count > 5 { close(quit) wg.Done() return }</code>
Membaca daripada Saluran Tertutup
Apabila saluran berhenti ditutup, bacaan daripadanya kembali serta-merta dengan sifar nilai. Tingkah laku ini dieksploitasi dalam gelung luar. Secara lalai, membaca dari saluran tertutup menghalang selama-lamanya. Walau bagaimanapun, ini boleh dielakkan menggunakan pernyataan pilih:
<code class="go">myLoop: for { select { case <-quit: break myLoop default: fmt.Println("iteration", i) i++ } }</code>
Dalam pernyataan pilih ini, kes lalai meneruskan lelaran gelung seperti yang dijangkakan. Apabila saluran berhenti ditutup, kes pertama berpuas hati, menyebabkan gelung pecah serta-merta.
Dengan menggunakan saluran isyarat, anda boleh menghentikan pelaksanaan gelung for daripada fungsi luaran atau goroutine dengan berkesan apabila perlu , memastikan lebih fleksibiliti dan kawalan ke atas pelaksanaan kod anda.
Atas ialah kandungan terperinci Bagaimana Anda Boleh Menghentikan Go For Loop Secara Luaran?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!