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