Sobes.tech
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 false antrame 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.