Sobes.tech
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")
}