Rumah >pembangunan bahagian belakang >Golang >Bagaimana Memecahkan Penyata Pilihan Apabila Semua Saluran Ditutup?

Bagaimana Memecahkan Penyata Pilihan Apabila Semua Saluran Ditutup?

DDD
DDDasal
2024-11-15 20:41:03245semak imbas

How to Break Out of a Select Statement When All Channels Are Closed?

Memecahkan Penyata Pilihan Apabila Semua Saluran Ditutup

Soalan:

Bagaimana bolehkah anda dengan cekap mengulangi berbilang gorouti bebas yang menghasilkan data melalui saluran sehingga semua saluran ditutup dan berhenti menggunakan apabila saluran kehabisan output mereka?

Jawapan:

Menggunakan pernyataan pilihan biasanya menggunakan data daripada berbilang saluran, tetapi menentukan bila semua saluran telah ditutup boleh menjadi mencabar. Berikut ialah cara ringkas untuk menangani perkara ini:

for {
    select {
    case p, ok := <-mins:
        if !ok { // channel is closed
            mins = nil // set channel to nil
        } else {
            fmt.Println("Min:", p)
        }
    case p, ok := <-maxs:
        if !ok {
            maxs = nil
        } else {
            fmt.Println("Max:", p)
        }
    }

    if mins == nil && maxs == nil {
        break // exit loop when all channels are nil
    }
}

Caranya di sini ialah untuk menetapkan saluran tertutup kepada sifar untuk mengelak daripada memilihnya lagi. Ini memastikan penyataan pilihan terus berjalan dan menyemak baki saluran terbuka.

Kelebihan:

  • Mengendalikan berbilang saluran bebas dengan cekap.
  • Elakkan pemeriksaan bersyarat atau tamat masa yang berlebihan.
  • Mudah dan ringkas pelaksanaan.

Atas ialah kandungan terperinci Bagaimana Memecahkan Penyata Pilihan Apabila Semua Saluran Ditutup?. 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