Maison >développement back-end >Golang >La réception ou l'envoi sont-ils évalués en premier dans une instruction Go « select » ?
Dévoilement de la dynamique des opérations de réception et d'envoi dans certaines déclarations
Lorsqu'ils cherchent à transmettre les résultats du canal, beaucoup optent pour la construction suivante :
for { select { ... case ch2 <- (<-ch1): ... } }
L'examen de ce code soulève la question : quel aspect de l'opération de sélection est évalué, la réception ou l'envoi action ?
La documentation Go met en lumière ceci :
Les opérandes de canal des opérations de réception et les expressions de canal et de droite des instructions d'envoi sont évaluées exactement une fois, dans l'ordre source, lors de la saisie de l'instruction "select".
Cela implique que dans l'exemple donné, l'expression <-ch1 est évaluée immédiatement et l'instruction select détermine si l'envoi à ch2 ou un cas alternatif sera exécuté.
Effectivement, cette méthode permet un blocage immédiat de la réception de ch1, la sélection contrôlant finalement l'envoi suivant sur ch2. Cependant, il convient de noter que même si un autre cas est choisi, la valeur de ch1 sera toujours consommée et supprimée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!