Sobes.tech
Junior — Middle

¿Se pueden enviar datos a un canal que tiene un valor nil?

sobes.tech AI

Respuesta de la IA

En Go, no se puede enviar datos a un canal si este es nil. Intentar enviar un valor a un canal nil provocará que la goroutine quede bloqueada indefinidamente, ya que dicho canal no está inicializado y no puede aceptar datos.

Ejemplo:

var ch chan int // ch == nil

go func() {
    ch <- 1 // se bloquea para siempre
}()

// el programa se quedará colgado

Para evitar el bloqueo, antes de usar el canal, se debe inicializar:

ch := make(chan int)
ch <- 1 // funciona correctamente

Si el canal puede ser nil, antes de enviar, se debe verificar su valor o usar select con default para evitar bloqueos.