Junior — Middle
İndiki zamanda elementlər içerməyən bir kanaldan məlumat oxumağa çalışsanız nə baş verir?
sobes.tech Süni İntellekt
AI-dan cavab
Go dilində, hazırda elementlər içerməyən bir kanaldan oxumağa çalışsanız, davranış kanalın növündən asılıdır:
- Bufferli kanal: əgər buffer boşdursa, oxuma bloklanır, kanal üzərinə element yazılana qədər.
- Buffersiz kanal: oxuma digər gorutina qiymət göndərənə qədər bloklanır.
Beləliklə, boş kanaldan oxuma cari gorutina bloklanmasına səbəb olur, məlumatlar və ya kanalın bağlanmasına qədər.
Nümunə:
ch := make(chan int)
// Boş kanaldan oxuma icraatı bloklayacaq
val := <-ch // kimsə qiymət göndərmədiyi müddətcə bloklanır
// Bloklamanı qarşısını almaq üçün, select ilə default istifadə edilə bilər
select {
case val := <-ch:
fmt.Println("Qəbul edildi", val)
default:
fmt.Println("Kanalda məlumat yoxdur")
}