Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah saya boleh keluar dari gelung berlabel untuk dari luar skopnya dalam Go?

Bagaimanakah saya boleh keluar dari gelung berlabel untuk dari luar skopnya dalam Go?

Patricia Arquette
Patricia Arquetteasal
2024-10-27 03:27:02356semak imbas

How can I break out of a labeled for loop from outside its scope in Go?

Memecahkan Gelung Berlabel Untuk dari Luar Skop

Dalam Go, mungkin sukar untuk mengganggu gelung berlabel untuk daripada kod yang wujud di luar skop gelung. Ini adalah perkara biasa apabila menggunakan rutin pergi untuk melaksanakan tugas berkala dan ingin menamatkan gelung berdasarkan syarat tertentu.

Penyelesaian:

Untuk mencapai ini, kami boleh menggunakan saluran isyarat. Begini cara untuk melakukannya:

  1. Buat Saluran Isyarat:
<code class="go">quit := make(chan struct{})</code>

Saluran jenis struct{}{} digunakan untuk menghantar isyarat bahawa gelung harus pecah. Saluran ini dicipta di luar skop gelung.

  1. Tutup Saluran untuk Pemecahan Isyarat:

Apabila syarat dipenuhi untuk memecahkan gelung, kami menutup saluran:

<code class="go">close(quit)</code>

Dengan menutup saluran, kami memberi isyarat bahawa rutin pergi harus ditamatkan.

  1. Ubah suai For Loop dengan Pernyataan Pilih:

Di dalam gelung berlabel untuk, masukkan pernyataan pilih untuk mendengar isyarat daripada saluran:

<code class="go">myLoop:
  for {
    select {
    case <-quit:
      break myLoop
    default:
      // Continue looping
    }
  }

Apabila saluran keluar ditutup, pernyataan pilih mengesan ini dan laksanakan pernyataan putus, dengan berkesan keluar dari gelung.

  1. Panggil Rutin Pergi:
<code class="go">go func (){
    for {
        // Loop continues until count > 5 or quit channel is closed
        fmt.Println("I will print every second", count)
        count++ 
        if count > 5 {
          close(quit)
          wg.Done()
          return
        }
        <-t.C
    }  
  }()</code>

Dalam rutin pergi ini , pernyataan pilih tidak diperlukan kerana gelung sudah dijalankan sebagai rutin pergi dan tidak perlu menyekat.

Dengan mengikuti langkah ini, anda boleh keluar daripada gelung berlabel untuk dari luar skop gelung dalam Gunakan saluran isyarat.

Atas ialah kandungan terperinci Bagaimanakah saya boleh keluar dari gelung berlabel untuk dari luar skopnya dalam 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