Junior — Middle
¿Cómo se realiza la transmisión de datos a través de un canal de comunicación sin búfer?
sobes.tech AI
Respuesta de la IA
La transferencia de datos a través de un canal no bufferizado en Go ocurre de manera sincrónica: el remitente se bloquea hasta que el receptor lea los datos, y viceversa. Esto garantiza una sincronización directa entre las goroutines.
Ejemplo:
ch := make(chan int) // canal no bufferizado
// Remitente
go func() {
ch <- 42 // se bloquea hasta que el receptor lea
}()
// Receptor
val := <-ch // se bloquea hasta que aparezca un valor
fmt.Println(val) // mostrará 42
De esta manera, los datos se transmiten directamente, sin almacenamiento intermedio, lo que garantiza la sincronización entre el remitente y el receptor.