Aller langue instruction select
Allez les instructions conditionnelles de langue
sélectionnez Go est une structure de contrôle dans une déclaration similaire pour le commutateur de communiquer. Chaque cas doit être une opération de communication, soit l'envoi ou la réception.
sélectionner l'exécution d'un cas aléatoire peut fonctionner. S'il n'y a aucun cas à courir, il sera bloqué jusqu'à ce que le cas peut être exécuté. Une clause de défaut doit toujours être en cours d'exécution.
grammaire
Aller Programmation Syntaxe langue de l'instruction select est la suivante:
select { case communication clause : statement(s); case communication clause : statement(s); /* 你可以定义任意数量的 case */ default : /* 可选 */ statement(s); }
Ce qui suit décrit la syntaxe de l'instruction select:
- Chaque cas doit être une communication
- Toutes expression de canal sera évalué
- Toutes les expressions seront envoyés à évaluer
- Si une communication peut être tout, il effectue, d'autres sont ignorés.
- Si plus d'un cas peut courir, Select choisira au hasard d'une exécution équitable. Autre ne sera pas exécutée.
Dans le cas contraire:- S'il y a la clause par défaut, l'instruction est exécutée.
- S'il n'y a pas de clause de défaut, sélectionnez le bloc jusqu'à ce qu'une communication peut fonctionner; Aller à la chaîne ou non la valeur réévaluée.
Exemples
package main import "fmt" func main() { var c1, c2, c3 chan int var i1, i2 int select { case i1 = <-c1: fmt.Printf("received ", i1, " from c1\n") case c2 <- i2: fmt.Printf("sent ", i2, " to c2\n") case i3, ok := (<-c3): // same as: i3, ok := <-c3 if ok { fmt.Printf("received ", i3, " from c3\n") } else { fmt.Printf("c3 is closed\n") } default: fmt.Printf("no communication\n") } }
Le code ci-dessus est exécutée à la suite de:
no communication