Idź język SELECT
Idź język instrukcji warunkowych
wybierz Go to struktura sterowania w podobnym oświadczeniu dla przełącznika do komunikowania się. Każdy przypadek musi być operacja komunikacji, albo wysyłanie lub odbieranie.
wybrać losowo wykonanie przypadku można uruchomić. Jeśli nie ma żadnego przypadku do pracy, będzie ona zablokowana, dopóki mogą być uruchamiane w tym przypadku. Domyślny klauzula powinna być zawsze uruchomione.
gramatyka
Idź programowania składni języka SELECT przedstawia się następująco:
select { case communication clause : statement(s); case communication clause : statement(s); /* 你可以定义任意数量的 case */ default : /* 可选 */ statement(s); }
Poniżej znajduje się opis składni SELECT:
- Każdy przypadek musi być komunikacja
- Wszystko wyraz kanał zostanie oceniona
- Wszystkie wyrażenia zostanie wysłany do oceny
- Jeśli komunikat może być dowolny, wykonuje go, a inne są ignorowane.
- Jeżeli więcej niż jeden przypadek można uruchomić, wybierz losowo wybrać uczciwą realizację. Inny nie może być wykonana.
W przeciwnym razie:- Jeśli nie ma domyślnej klauzuli, instrukcja zostanie wykonana.
- Jeśli nie ma domyślną klauzulę wybierz grupowego do komunikatu może uruchomić; Przejdź do kanału, czy nie ponownej ocenie wartości.
Przykłady
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") } }
Powyższy kod jest wykonywany w wyniku:
no communication