Go - L'istruzione Select

La sintassi per a select L'istruzione nel linguaggio di programmazione Go è la seguente:

select {
   case communication clause  :
      statement(s);      
   case communication clause  :
      statement(s); 
   /* you can have any number of case statements */
   default : /* Optional */
      statement(s);
}

Le seguenti regole si applicano a un file select dichiarazione -

  • Puoi avere un numero qualsiasi di istruzioni case all'interno di un select. Ogni caso è seguito dal valore da confrontare e da due punti.

  • Il type per un caso deve essere un'operazione di canale di comunicazione.

  • Quando si è verificata l'operazione sul canale, verranno eseguite le istruzioni che seguono quel caso. Nobreak è necessario nell'istruzione case.

  • UN select l'istruzione può avere un optional defaultcase, che deve comparire alla fine della selezione. Il caso predefinito può essere utilizzato per eseguire un'attività quando nessuno dei casi è vero. Nobreak è necessario nel caso predefinito.

Esempio

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

Quando il codice precedente viene compilato ed eseguito, produce il seguente risultato:

no communication