Meloloskan diri daripada Penyata Pilihan apabila Berbilang Saluran Ditutup
Apabila menggunakan pernyataan pilih untuk pengendalian input serentak, adalah wajar untuk keluar dari gelung apabila semua saluran input telah ditutup. Coretan kod yang dibentangkan cuba menggunakan kes lalai untuk mengendalikan senario ini, tetapi ia tidak mencukupi kerana ia tidak dapat menjamin pengesanan yang tepat.
Penyelesaian yang lebih berkesan melibatkan menghapuskan saluran tertutup dalam pernyataan pilihan. Apabila saluran ditutup, ia diberikan nilai sifar, menunjukkan ia tidak lagi layak untuk dipilih. Pendekatan ini memastikan gelung akan diteruskan hanya selagi terdapat saluran aktif.
Pada dasarnya, kod yang diubah suai akan kelihatan seperti berikut:
for { var x, ok = <-ch1 // Receive from ch1 fmt.Println("ch1", x, ok) if !ok { ch1 = nil // Nil closed channel } x, ok = <-ch2 // Receive from ch2 fmt.Println("ch2", x, ok) if !ok { ch2 = nil // Nil closed channel } if ch1 == nil && ch2 == nil { break // Exit loop when all channels are nil } }
Penyelesaian ini mengendalikan pengesanan penutupan saluran dengan elegan tanpa memperkenalkan kebimbangan prestasi, memastikan pelaksanaan yang ringkas dan cekap. Apabila bilangan saluran input bertambah, pendekatan pengguguran kekal mudah, menjadikannya berskala untuk mengendalikan berbilang input.
Atas ialah kandungan terperinci Bagaimana untuk Keluar dari Penyata Pilihan Apabila Semua Saluran Tutup?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!