Sobes.tech
Junior — Middle

Que se passe-t-il si vous essayez de fermer un canal qui est déjà fermé?

sobes.tech IA

Réponse de l'IA

En Go, tenter de fermer un canal déjà fermé entraînera un panic lors de l'exécution du programme. Cela est dû au fait que la fonction close() est conçue pour fermer un canal une seule fois, et une fermeture répétée est considérée comme une erreur.

Exemple:

ch := make(chan int)
close(ch)      // fermeture correcte
close(ch)      // provoquera un panic : close of closed channel

Pour éviter le panic, il faut garantir que le canal ne soit fermé qu'une seule fois, par exemple en utilisant une logique supplémentaire ou une synchronisation.