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
falseen 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.