Maison >développement back-end >Golang >Golang Chan est-il fermé ?

Golang Chan est-il fermé ?

(*-*)浩
(*-*)浩original
2019-12-13 11:45:243118parcourir

Golang Chan est-il fermé ?

chan est une chose très importante en golang, utilisé pour la communication goroutine , car les programmes golang auront inévitablement plusieurs goroutines, comment synchroniser ces goroutines est très important.

Lors de l'utilisation du chan, il existe plusieurs expériences : (Apprentissage recommandé : GO )

Tout d'abord, ce sera toujours un symbole & lt; Lire ou écrire, par exemple v,ok := <-c est pour la lecture, et c <- v est pour l'écriture.

Deuxièmement, lors de la lecture, s'il n'y a pas d'accord, il peut également être lu. Cependant, s'il est fermé, il peut aussi être lu, il n'y a pas d'affectation ; si vous voulez savoir s'il est fermé, vous devez ajouter ok, c'est-à-dire à moins que chan ne soit jamais fermé, sinon v,ok := < -c doit être utilisé pour la lecture au lieu de v := < ;-c way.

Encore une fois, vous ne pouvez pas écrire sur un canal fermé, vous devez donc généralement utiliser un canal de signal (généralement le tampon est 1) pour déterminer s'il faut écrire ou abandonner. Utilisez select pour déterminer si l'écriture est réussie. , ou il se ferme et doit abandonner l'écriture.

Enfin, si chan a des données après la fermeture, ok sera toujours vrai, et ce sera faux jusqu'à ce que chan n'ait plus de données.

Lorsqu'un canal est fermé, la récupération ne bloquera pas, mais renverra une valeur nulle

package main
 
import "fmt"
 
func main() {
    c := make(chan int, 5)
    c <- 123
    close(c)
     
    fmt.Println(<-c)
    fmt.Println(<-c)
}

Sortie

123
0

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