Sobes.tech
Senior

Šta se dešava pri čitanju i pisanju u zatvorenom kanalu?

sobes.tech АИ

Одговор од АИ

U Go-u, prilikom rada sa kanalima:

  • Čitanje iz zatvorenog kanala: Ako je kanal zatvoren i nema podataka, operacija čitanja vraća početnu vrednost tipa kanala i false u drugoj vrednosti (ako se koristi), što signalizira zatvaranje kanala.

  • Pisanje u zatvoreni kanal: Pokušaj pisanja u zatvoreni kanal izaziva paniku (panic). Ovo je greška u izvršenju.

Primer:

ch := make(chan int)
close(ch)

// Čitanje
v, ok := <-ch // ok == false, v == 0

// Pisanje
ch <- 1 // panic: send on closed channel

Dakle, zatvoreni kanal može biti sigurno čitan dok ima podataka, ali u njega ne može pisati.