Maison  >  Article  >  développement back-end  >  Comment déterminer si le canal est fermé dans Golang

Comment déterminer si le canal est fermé dans Golang

尚
original
2020-01-13 09:31:459289parcourir

Comment déterminer si le canal est fermé dans Golang

Map est une collection non ordonnée de paires clé-valeur. Le point le plus important de Map est de récupérer rapidement les données via une clé, qui est similaire à un index et pointe vers la valeur des données.

Map est une collection, nous pouvons donc la parcourir tout comme les tableaux et les tranches. Cependant, Map n'est pas ordonné et nous ne pouvons pas déterminer l'ordre dans lequel il est renvoyé. En effet, Map est implémenté à l'aide d'une table de hachage.

Jetons un coup d'œil à la méthode permettant de déterminer si une chaîne est fermée dans Golang :

Lors de la lecture d'une chaîne, déterminez si elle a été fermée

_,ok := <- jobs

Si le canal est fermé à ce moment, la valeur ok est fausse

Lors de l'écriture dans le chaîne, déterminez si elle a été fermée

1._,ok := <- jobs

Si la chaîne est fermée à ce moment, la ok la valeur est fausse. Si le canal n'est pas fermé, un travail sera manqué

2. Utilisez la méthode de sélection

pour créer un autre canal, appelé timeout. Si le délai expire, envoyez true à ce canal et le producteur enverra les données au canal du travail. Utilisez select pour surveiller le délai d'attente, et s'il expire, fermez le canal des travaux.

go func() {
 time.Sleep(time.Second * 3)
 timeout <- true
 }()
go func() {
 for i := 0; ; i++ {
 select {
     case <-timeout:
         close(jobs)
         return
 
     default:
         jobs <- i
         fmt.Println("produce:", i)
         }
     }
 }()

Pour plus de golang. connaissances, veuillez faire attention à la colonne tutoriel golang du site Web PHP chinois.

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:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn