Maison > Article > développement back-end > Comment l'instruction « select » de Go gère-t-elle les opérations de réception et d'envoi simultanées ?
Canaux de communication via des instructions sélectionnées
Pour transférer les résultats entre les canaux, vous pouvez rencontrer un code comme celui-ci :
for { select { ... case ch2 <- <-ch1: ... } }
Cette conception soulève des questions sur la façon dont select fonctionne à la fois sur les opérations de réception et d'envoi.
Réception ou Envoyer ou les deux ?
Contrairement à la sélection de l'une ou l'autre opération individuellement, l'instruction select évalue l'ensemble de l'opération, y compris les opérations de réception (<-ch1) et d'envoi (ch2 <-), lors de la saisie la sélection. Cela signifie que :
case ch2 <- <-ch1:
se bloquera immédiatement à la réception de ch1, puis la sélection déterminera si l'envoi sur ch2 se poursuit ou si un cas différent est choisi.
Essentiellement, le select traite le cas ci-dessus comme :
case ch2 <- <something>:
où
Effets secondaires
Cette conception entraîne un effet secondaire : si le cas avec la réception imbriquée (<-ch1) n'est pas sélectionné , la valeur de ch1 est toujours consommée et rejeté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!