Sobes.tech
Senior

¿Qué sucede al leer y escribir en un canal cerrado?

sobes.tech AI

Respuesta de la IA

En Go, al trabajar con canales:

  • Leer de un canal cerrado: Si el canal está cerrado y no hay datos en él, la operación de lectura devuelve el valor cero del tipo del canal y false en el segundo valor devuelto (si se usa), lo que indica que el canal está cerrado.

  • Escribir en un canal cerrado: Intentar escribir en un canal cerrado provoca un pánico (panic). Esto es un error en tiempo de ejecución.

Ejemplo:

ch := make(chan int)
close(ch)

// Lectura
v, ok := <-ch // ok == false, v == 0

// Escritura
ch <- 1 // panic: send on closed channel

Por lo tanto, se puede leer de un canal cerrado de forma segura mientras tenga datos, pero no se puede escribir.