Senior
¿Qué son los canales en Go y para qué sirven? ¿Qué tipos de canales existen?
sobes.tech AI
Respuesta de la IA
Los canales en Go son un mecanismo para transmitir datos entre goroutines, asegurando sincronización e intercambio de información.
Características principales:
- Permiten transmitir valores de manera segura entre goroutines que se ejecutan en paralelo.
- Garantizan bloqueo del emisor si el canal está lleno y del receptor si el canal está vacío.
Tipos de canales:
- Bidireccionales (chan T): se pueden enviar y recibir datos.
- Solo para enviar (chan<- T): solo se pueden enviar datos.
- Solo para recibir (<-chan T): solo se pueden recibir datos.
Ejemplo de uso de un canal:
ch := make(chan int) // canal bidireccional
// Envío en una goroutine
go func() {
ch <- 42
}()
// Recepción
val := <-ch
fmt.Println(val) // 42
Los canales facilitan la comunicación y sincronización entre goroutines, evitando la necesidad de bloqueos explícitos.