Rumah > pembangunan bahagian belakang > Golang > 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
Lepaskan: 2024-10-27 03:27:02
asal
466 orang telah melayarinya

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

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

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

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

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!

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