Maison >développement back-end >Golang >À propos de la compréhension de select dans Golang
La syntaxe de l'instruction Select et de l'instruction Switch est très similaire, mais le Case in Select doit être une opération de communication (une opération Channel). La logique d'exécution est la suivante :Quelle opération de canal derrière le cas peut être exécutée avec succès, puis exécutez le bloc de code sous le cas . Si plusieurs cas peuvent être exécutés avec succès en même temps, l'un d'eux est sélectionné au hasard. Si aucun des cas ne peut être exécuté avec succès, le bloc de code par défaut est exécuté. S'il n'y a pas de valeur par défaut, il bloquera et renverra une erreur de blocage.
Surveiller les opérations IO et lorsque des opérations IO se produisent, déclencher les actions correspondantesPar exemple, lorsqu'un canal c1 est écrit avec une donnéeCette déclaration est correcte. La surveillance des opérations IO (du canal) et la prise des actions correspondantes sont en effet des scénarios d'application sélectionnés. mais ne pensez pas à tort que l'instruction Select sélectionne le cas dans lequel l'opération Channel est exécutée ! Cette compréhension est fausse ! Ce que Select sélectionnera en fait, c'est le cas dans lequel l'opération Channel peut être exécutée avec succès, puis le bloc de code dans ce cas sera exécuté.
c1 := make(chan string, 1)c1 <- "Hello World!"Si nous avons l'instruction de jugement Select suivante
select { case <-c1: fmt.Println("Case 1 is selected") case c1<-"Hello World!": fmt.Println("Case 2 is selected") default : fmt.Println("Default is selected")}vous obtiendrez ce qui suit result
Case 1 is selectedParce que c1 a été écrit avec une donnée, nous pouvons réussir à "lire une donnée de c1". Autrement dit, le premier cas peut être exécuté avec succès. Par conséquent, le bloc de code du premier cas est finalement exécuté.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!