Saluran Yang Sama Terima dan Hantar dalam Penyata Pilihan
Penyata pilihan Go menawarkan kawalan serentak yang fleksibel dengan membenarkan berbilang operasi dilaksanakan secara serentak. Walau bagaimanapun, ia menimbulkan persoalan tentang bagaimana pernyataan pilihan berinteraksi dengan operasi yang melibatkan penerimaan dan penghantaran pada saluran yang sama.
Jawapannya terletak pada cara Go menilai saluran dan ungkapan dalam pernyataan pilihan. Menurut dokumentasi rasmi, operan saluran dan ungkapan sebelah kanan penyata hantar dinilai apabila memasukkan pilihan. Ini bermakna ungkapan:
case ch2 <- (<-ch1):
diperlakukan dengan berkesan sebagai:
case ch2 <- <something>:
di mana
Oleh itu, kenyataan pilih menyekat serta-merta pada operasi terima daripada ch1. Jika ch1 mempunyai nilai, operasi terima berjaya, dan operasi hantar ke ch2 dilaksanakan. Jika ch1 tidak mempunyai nilai, pilih terus menunggu sehingga nilai tersedia atau kes lain dipilih.
Tingkah laku ini mempunyai kesan sampingan yang berpotensi memakan dan membuang nilai daripada ch1 walaupun operasi hantar kepada ch2 tidak dipilih. Perkara ini penting untuk dipertimbangkan semasa mereka bentuk program serentak untuk mengelakkan tingkah laku yang tidak dijangka.
Atas ialah kandungan terperinci Bagaimanakah Penyata Pilihan Go Mengendalikan Operasi Menerima dan Menghantar Saluran Sama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!