Latest web development tutorials

Aller langue instruction select

Allez les instructions conditionnelles de langue 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:
    1. S'il y a la clause par défaut, l'instruction est exécutée.
    2. 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

Allez les instructions conditionnelles de langue Allez les instructions conditionnelles de langue