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