Sobes.tech
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.