Sobes.tech
Middle+

Pod kojim uslovima će čitanje iz kanala biti zauvek blokirano? Šta će se desiti pri pisanju u nil-kanal? Pri pisanju u zatvoreni kanal?

sobes.tech АИ

Одговор од АИ

  • Čitanje iz kanala će biti blokirano zauvek ako je kanal prazan i niko ne planira da piše u njega (na primer, svi pošiljaoci su zatvoreni ili nedostupni).

  • Pisanje u nil-kanal (kanal jednak nil) uvek je blokirano zauvek, jer nil-kanal nije inicijalizovan i ne može primati podatke.

  • Pisanje u zatvoreni kanal izaziva paniku (panic) u Go, jer je to zabranjeno i smatra se greškom u izvršenju.

Primer:

var ch chan int // nil-kanal

// <-ch // čitanje iz nil-kanala je zauvek blokirano

// ch <- 1 // pisanje u nil-kanal je zauvek blokirano

ch = make(chan int)
close(ch)
// ch <- 2 // panic: slanje na zatvoreni kanal