Junior — Middle
¿De qué maneras se puede utilizar un canal en un programa?
sobes.tech AI
Respuesta de la IA
En Go, el canal (channel) se utiliza para transferir datos entre goroutines y organizar la sincronización.
Las formas principales de usar un canal:
-
Enviar y recibir datos:
- Enviar:
ch <- value - Recibir:
value := <-ch
- Enviar:
-
Canales con búfer y sin búfer:
- El canal sin búfer bloquea al remitente hasta que el receptor acepte los datos.
- El canal con búfer permite enviar varios valores sin bloqueo, hasta que se llene el búfer.
-
Cerrar un canal:
- Se puede cerrar un canal con la función
close(ch), para indicar que no habrá más datos.
- Se puede cerrar un canal con la función
-
Uso de select para multiplexación:
- Permite esperar en varios canales simultáneamente y reaccionar al primero que esté disponible.
Ejemplo:
ch := make(chan int, 2) // canal con búfer
// Envío
ch <- 1
ch <- 2
// Recepción
val := <-ch
// Cierre
close(ch)
// Uso de select
select {
case v := <-ch:
fmt.Println("Recibido", v)
case <-time.After(time.Second):
fmt.Println("Timeout")
}
De esta forma, los canales permiten intercambiar datos de forma segura y sincronizar la ejecución de goroutines.