Senior
Kas vyksta skaitant ir rašant uždaroje kanale?
sobes.tech AI
Atsakymas iš AI
Go kalbant apie kanalus:
-
Skaitymas iš uždaryto kanalo: Jei kanalas uždarytas ir jame nėra duomenų, skaitymo operacija grąžina nulio reikšmę kanalo tipui ir
falseantrame grąžinamame reikšmėje (jei naudojama), kas signalizuoja apie kanalo uždarymą. -
Rašymas į uždarytą kanalą: Bandymas rašyti į uždarytą kanalą sukelia paniką (
panic). Tai vykdymo klaida.
Pavyzdys:
ch := make(chan int)
close(ch)
// Skaitymas
v, ok := <-ch // ok == false, v == 0
// Rašymas
ch <- 1 // panic: send on closed channel
Taigi, uždarytą kanalą galima saugiai skaityti tol, kol jame yra duomenų, bet į jį rašyti nebegalima.