Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimanakah Penyata `select` Go Mengendalikan Operasi Terima dan Hantar Serentak?

Bagaimanakah Penyata `select` Go Mengendalikan Operasi Terima dan Hantar Serentak?

Barbara Streisand
Barbara Streisandasal
2024-11-17 04:34:03868semak imbas

How Does Go's `select` Statement Handle Simultaneous Receive and Send Operations?

Berkomunikasi Saluran melalui Penyata Pilihan

Untuk memajukan hasil antara saluran, anda mungkin menghadapi kod seperti ini:

for {
    select {
        ...
        case ch2 <- <-ch1:
        ...
    }
}

Reka bentuk ini menimbulkan persoalan tentang cara pilih beroperasi pada kedua-dua operasi terima dan hantar.

Terima atau Hantar, atau Kedua-duanya?

Bertentangan dengan memilih sama ada operasi secara individu, pilih penyata menilai keseluruhan operasi, termasuk operasi terima (<-ch1) dan hantar (ch2 <-), apabila memasukkan pilih. Ini bermakna:

case ch2 <- <-ch1:

akan menyekat serta-merta menerima daripada ch1, dan kemudian pilih akan menentukan sama ada penghantaran pada ch2 diteruskan atau kes lain dipilih.

Pada dasarnya, pilih memperlakukan kes di atas sebagai:

case ch2 <- <something>:

di mana dinilai apabila memasukkan pilihan.

Kesan Sampingan

Reka bentuk ini membawa kesan sampingan: jika kes dengan penerima bersarang (<-ch1) tidak dipilih , nilai daripada ch1 masih digunakan dan dibuang.

Atas ialah kandungan terperinci Bagaimanakah Penyata `select` Go Mengendalikan Operasi Terima dan Hantar Serentak?. 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