Junior — Middle
Ce se întâmplă dacă încerci să citești date dintr-un canal care în prezent nu conține elemente?
sobes.tech AI
Răspuns de la AI
În Go, dacă încerci să citești dintr-un canal care în prezent nu conține elemente, comportamentul depinde de tipul canalului:
- Canal tamponat: dacă tamponul este gol, citirea se blochează până când un element este scris în canal.
- Canal fără tampon: citirea se blochează până când o altă gorutină trimite o valoare.
Prin urmare, citirea dintr-un canal gol duce la blocarea gorutinei curente până când apar date sau canalul este închis.
Exemplu:
ch := make(chan int)
// Citirea dintr-un canal gol va bloca execuția
val := <-ch // se blochează până când cineva trimite o valoare
// Pentru a evita blocarea, se poate folosi select cu default
select {
case val := <-ch:
fmt.Println("Primite", val)
default:
fmt.Println("Niciun dat în canal")
}