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.