Mengesan Saluran Penimbalan Penuh
Dalam Go, saluran penimbal mempunyai had kapasiti maksimum. Apabila saluran penimbal mencapai kapasitinya, menghantar item tambahan kepadanya biasanya akan mengakibatkan penyekatan operasi. Walau bagaimanapun, terdapat situasi di mana anda mungkin memilih untuk melepaskan item daripada menyekat.
Menggunakan Pernyataan Pilih dengan Lalai
Satu cara untuk menentukan sama ada saluran penimbal penuh ialah menggunakan pernyataan pilih dengan klausa lalai. Berikut ialah contoh:
package main import "fmt" func main() { ch := make(chan int, 1) // Fill it up ch <- 1 select { case ch <- 2: // Put 2 in the channel unless it is full default: fmt.Println("Channel full. Discarding value") } }
Dalam contoh ini, pernyataan pilih mempunyai dua kes:
Output:
Channel full. Discarding value
Menyemak Saiz Saluran
Kaedah lain untuk mengesan saluran penuh ialah menyemak saiznya menggunakan len(ch) dan bandingkan dengan kapasitinya menggunakan cap(ch).
if len(ch) == cap(ch) { // Channel was full, but might not be by now } else { // Channel wasn't full, but might be by now }
Perhatikan bahawa pendekatan ini tidak menjamin keputusan akan sah pada masa blok if dimasukkan kerana kemungkinan salurkan aktiviti antara semakan saiz dan pernyataan if.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengesan Saluran Penampan Penuh dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!