Sobes.tech
Senior

Que se passe-t-il lors de la lecture d'un canal fermé en Go?

sobes.tech IA

Réponse de l'IA

Lors de la lecture à partir d'un canal fermé en Go, voici ce qui se passe :

  • Si le canal contient des données, elles seront lues normalement.
  • Si le canal est fermé et qu'il n'y a pas de données, l'opération de lecture renverra la valeur zéro du type du canal et false dans la deuxième valeur de retour (si la forme avec deux valeurs de retour est utilisée).

Exemple :

ch := make(chan int)
close(ch)

v, ok := <-ch
fmt.Println(v, ok) // Affichera : 0 false

Cela permet de déterminer que le canal est fermé et qu'il n'y aura plus de données. Lors de la lecture d'un canal fermé sans données, la goroutine ne se bloque pas et reçoit immédiatement la valeur zéro.

Si vous lisez depuis un canal fermé sans vérifier la deuxième valeur, vous pouvez obtenir des données nulles, ce qui est important à prendre en compte dans la logique de traitement.