Middle
¿Cómo provocar pánico al trabajar con un canal? ¿Qué sucede con las operaciones en un canal nil y un canal cerrado?
sobes.tech AI
Respuesta de la IA
En Go, el pánico al trabajar con canales ocurre en los siguientes casos:
- Enviar un valor a un canal cerrado (
chan <- value) provoca un pánico. - Cerrar un canal ya cerrado (
close(chan)) provoca un pánico.
En cuanto a los canales nil:
- Las operaciones de envío y recepción con un canal nil se bloquean indefinidamente (deadlock), pero no provocan un pánico.
Ejemplo:
var ch chan int // canal nil
// <-ch // se bloquea indefinidamente
// ch <- 1 // se bloquea indefinidamente
ch = make(chan int)
close(ch)
// ch <- 1 // panic: envío en canal cerrado
close(ch) // panic: cierre de canal cerrado