Maison >développement back-end >Golang >À propos de la compréhension de select dans Golang

À propos de la compréhension de select dans Golang

藏色散人
藏色散人avant
2020-08-26 11:46:452883parcourir
Vous trouverez ci-dessous

Tutoriel Golang colonne pour présenter la compréhension de Select dans Golang, j'espère aider les amis dans le besoin !

À 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 correspondantes

Cette 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é.

Par exemple, lorsqu'un canal c1 est écrit avec une donnée

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 selected

Parce 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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer