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