Sobes.tech
Middle+

Za akých podmienok bude čítanie z kanála navždy zablokované? Čo sa stane pri zápise do nil-kanála? Pri zápise do zatvoreného kanála?

sobes.tech AI

Odpoveď od AI

  • Čítanie z kanála bude navždy zablokované, ak je kanál prázdny a nikto neplánuje do neho písať (napríklad, všetci odosielatelia sú zatvorení alebo chýbajú).

  • Zápis do nil-kanála (kanál rovný nil) je vždy navždy zablokovaný, pretože nil-kanál nie je inicializovaný a nemôže prijímať dáta.

  • Zápis do zatvoreného kanála spôsobí v Go paniku (panic), pretože je to zakázané a považuje sa to za chybu za behu.

Príklad:

var ch chan int // nil-kanál

// <-ch // čítanie z nil-kanála je navždy zablokované

// ch <- 1 // zápis do nil-kanála je navždy zablokovaný

ch = make(chan int)
close(ch)
// ch <- 2 // panic: odoslanie na zatvorený kanál