Latest web development tutorials

Go Sprache select-Anweisung

Go Sprache bedingten Anweisungen Go Sprache bedingten Anweisungen

Wählen Sie Go ist eine Kontrollstruktur in einer ähnlichen Erklärung für den Schalter zu kommunizieren. Jeder Fall muss eine Kommunikationsoperation sein, entweder das Senden oder Empfangen.

Wählen Sie eine zufällige Fall Ausführung ausgeführt werden kann. Wenn es keinen Fall zu laufen, wird sie blockiert werden, bis dann der Fall ausgeführt werden. Eine Standard-Klausel sollte immer ausgeführt werden.

Grammatik

Go Programmiersprache select-Anweisung Syntax lautet wie folgt:

select {
    case communication clause  :
       statement(s);      
    case communication clause  :
       statement(s); 
    /* 你可以定义任意数量的 case */
    default : /* 可选 */
       statement(s);
}

Im Folgenden wird die Syntax der select-Anweisung:

  • Jeder Fall muss eine Kommunikation sein
  • Alle Kanal Ausdruck wird ausgewertet
  • Alle Ausdrücke werden gesendet ausgewertet werden
  • Wenn eine Kommunikation beliebig sein kann, führt es, andere ignoriert werden.
  • Wenn mehr als ein Fall ausgeführt werden kann, wird Wählen Sie zufällig eine faire Ausführung wählen. Andere nicht ausgeführt werden.
    Ansonsten:
    1. Bei Standard-Klausel ist, wird die Anweisung ausgeführt.
    2. Wenn es keine Standard-Klausel ist, wählen Sie den Block, bis eine Kommunikation ausgeführt werden kann, gehen Sie zu Kanal oder nicht neu bewertet Wert.

Beispiele

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")
   }    
}

Der obige Code wird als Ergebnis der Ausführung:

no communication

Go Sprache bedingten Anweisungen Go Sprache bedingten Anweisungen