Maison > développement back-end > Golang > Est-ce que `select` choisit de recevoir ou d'envoyer dans `case ch2

Est-ce que `select` choisit de recevoir ou d'envoyer dans `case ch2

Barbara Streisand
Libérer: 2024-11-15 07:58:02
original
818 Les gens l'ont consulté

Does `select` Choose to Receive or Send in `case ch2

Réception et envoi dans une seule instruction de cas

Dans Go, il est possible de combiner des opérations de réception et d'envoi au sein d'une même instruction de cas sélectionné, comme le démontre cet extrait de code :

for {
    select {
    ...
    case ch2 <- (<-ch1):
    ...
    }
}
Copier après la connexion

Ce code vise à transmettre les résultats du canal ch1 au canal ch2. Cependant, cela soulève la question de savoir sur quelle opération, réception de ch1 ou envoi vers ch2, l'instruction select sélectionne.

Le processus de sélection

Comme expliqué dans le Go documentation, lors de la saisie d'une instruction select :

  • Les expressions de canal dans les opérations de réception et les instructions d'envoi sont évaluées, ce qui donne un ensemble de canaux à recevoir ou à envoyer à, ainsi que les valeurs correspondantes pour l'envoi.
  • Tous les effets secondaires se produisent immédiatement lors de cette évaluation.
  • Les expressions sur le côté gauche d'une opération de réception avec une courte déclaration ou affectation de variable ne sont pas évalué.

Implications pour le code donné

Dans l'exemple fourni, les éléments suivants se produit :

case ch2 <- (<-ch1):
Copier après la connexion
  • L'expression <-ch1 est évaluée, bloquant immédiatement à la réception de ch1.
  • La valeur résultante est stockée dans la variable temporaire à gauche- côté main de l'affectation.
  • L'instruction select contrôle ensuite si l'opération d'envoi sur ch2 se produit.

Par conséquent, l'instruction select choisit d'envoyer la valeur reçue de ch1 à ch2 ou de gérer un cas différent.

Effet secondaire

Il est important de noter que même si la réception l'opération à partir de ch1 n'est finalement pas sélectionnée, la valeur est toujours consommée et rejetée. Ce comportement peut être significatif et doit être pris en compte lors de l'utilisation de ce modèle.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal