Sobes.tech
Junior — Middle

À quelle fréquence faut-il fermer un canal en Go pour éviter des erreurs?

sobes.tech IA

Réponse de l'IA

Il est nécessaire de fermer un canal en Go exactement une fois, lorsque vous ne prévoyez plus d’envoyer de données dedans. Fermer le canal plusieurs fois entraînera une panique (runtime panic).

Important :

  • La personne qui écrit dans le canal doit le fermer, pas celle qui le lit.
  • Si le canal est utilisé pour transférer des données entre goroutines, la fermeture indique qu’il n’y aura plus de données.

Exemple :

ch := make(chan int)
func() {
    defer close(ch) // fermer le canal une fois
    for i := 0; i < 5; i++ {
        ch <- i
    }
}()

for val := range ch {
    fmt.Println(val)
}

Dans cet exemple, le canal est fermé une fois après l’envoi de toutes les valeurs.