Junior — Middle
¿Cómo se realiza la transmisión de datos a través de un canal no bufferizado?
sobes.tech AI
Respuesta de la IA
En Go, un canal no bufferizado (canal sin búfer) proporciona una transferencia de datos sincrónica entre goroutines. Esto significa que el envío de un valor al canal se bloquea hasta que otra goroutine recibe ese valor del canal, y viceversa: la recepción se bloquea hasta que hay un valor para leer.
De esta manera, la transferencia de datos a través de un canal no bufferizado ocurre con la sincronización del emisor y el receptor, lo que garantiza un intercambio de datos sin almacenamiento intermedio.
Ejemplo:
ch := make(chan int) // canal no bufferizado
go func() {
ch <- 42 // el envío se bloquea hasta que alguien lea
}()
value := <-ch // la recepción bloquea la ejecución hasta que aparece un valor
fmt.Println(value) // mostrará 42
En este ejemplo, la goroutine envía un número al canal y se bloquea hasta que la goroutine principal lee ese número.