Sobes.tech
Middle

Comment provoquer la panique lors de l'utilisation d'un canal ? Que se passe-t-il lors des opérations avec un canal nil et un canal fermé ?

sobes.tech IA

Réponse de l'IA

En Go, une panique lors de l'utilisation de canaux se produit dans les cas suivants :

  • Envoyer une valeur dans un canal fermé (chan <- value) provoque une panique.
  • Fermer un canal déjà fermé (close(chan)) provoque une panique.

En ce qui concerne les canaux nil :

  • Les opérations d'envoi et de réception avec un canal nil se bloquent indéfiniment (deadlock), mais ne provoquent pas de panique.

Exemple :

var ch chan int // canal nil

// <-ch // se bloque indéfiniment
// ch <- 1 // se bloque indéfiniment

ch = make(chan int)
close(ch)

// ch <- 1 // panic : envoi sur un canal fermé

close(ch) // panic : fermeture d'un canal déjà fermé