Go - La declaración Select

La sintaxis de un select declaración en el lenguaje de programación Go es la siguiente:

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

Las siguientes reglas se aplican a select declaración -

  • Puede tener cualquier número de declaraciones de casos dentro de una selección. Cada caso va seguido del valor que se va a comparar y dos puntos.

  • los type para un caso debe ser la operación de un canal de comunicación.

  • Cuando se produzca la operación del canal, se ejecutarán las declaraciones que siguen a ese caso. Nobreak es necesario en la declaración del caso.

  • UNA select declaración puede tener un opcional defaultcaso, que debe aparecer al final de la selección. El caso predeterminado se puede utilizar para realizar una tarea cuando ninguno de los casos es verdadero. Nobreak es necesario en el caso predeterminado.

Ejemplo

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

Cuando el código anterior se compila y ejecuta, produce el siguiente resultado:

no communication