Junior — Middle
Come avviene la trasmissione dei dati attraverso un canale di comunicazione senza buffer?
sobes.tech AI
Risposta dell'AI
Il trasferimento di dati attraverso un canale non bufferizzato in Go avviene in modo sincrono: il mittente si blocca finché il ricevitore non legge i dati, e viceversa. Questo garantisce una sincronizzazione diretta tra le goroutine.
Esempio:
ch := make(chan int) // canale non bufferizzato
// Mittente
go func() {
ch <- 42 // si blocca finché il ricevitore non legge
}()
// Ricevitore
val := <-ch // si blocca finché non compare un valore
fmt.Println(val) // stamperà 42
In questo modo, i dati vengono trasmessi direttamente, senza memorizzazione intermedia, garantendo la sincronizzazione tra mittente e ricevitore.