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é