Junior — Middle
Cum se realizează transmiterea datelor printr-un canal ne-bufferizat?
sobes.tech AI
Răspuns de la AI
În Go, un canal fără buffer (canal nebufferizat) asigură transferul sincron de date între goroutines. Aceasta înseamnă că trimiterea unei valori în canal se blochează până când o altă goroutine primește acea valoare din canal, și invers — recepția se blochează până când există o valoare de citit.
Astfel, transferul de date printr-un canal nebufferizat are loc cu sincronizarea expeditorului și receptorului, garantând schimbul de date fără stocare intermediară.
Exemplu:
ch := make(chan int) // canal nebufferizat
go func() {
ch <- 42 // trimiterea se blochează până când cineva citește
}()
value := <-ch // recepția blochează execuția până apare o valoare
fmt.Println(value) // va afișa 42
În acest exemplu, goroutine trimite un număr în canal și se blochează până când goroutine principală citește acel număr.