Bagaimana Anda Boleh Menghentikan Go For Loop Secara Luaran?

Barbara Streisand
Lepaskan: 2024-10-26 09:52:29
asal
675 orang telah melayarinya

How Can You Halt a Go For Loop Externally?

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!