Sobes.tech
Junior — Middle

Quelle est la différence entre obtenir une valeur nulle d'un canal fermé et obtenir la même valeur en créant soi-même un canal et en y envoyant des données?

sobes.tech IA

Réponse de l'IA

En Go, lors de la lecture d'un canal, si le canal est fermé et qu'il n'y a plus de données, l'opération de lecture retourne la valeur zéro du type du canal et false dans la deuxième valeur retournée (si vous utilisez la syntaxe v, ok := <-ch). Cela indique que le canal est fermé et qu'il n'y aura plus de données.

Si, en revanche, vous créez un canal, y envoyez une valeur nulle et le lisez, l'opération de lecture renverra cette valeur nulle, mais ok sera true, car le canal est ouvert et des données ont été reçues.

Résumé :

  • Canal fermé sans données : la lecture retourne la valeur zéro + ok == false.
  • Canal ouvert avec une valeur nulle : la lecture retourne la valeur nulle + ok == true.

Cela permet de distinguer la valeur nulle réelle du signal de fermeture du canal.