Maison > développement back-end > Golang > le corps du texte

Golang Chan est-il fermé ?

(*-*)浩
Libérer: 2019-12-13 11:45:24
original
3087 Les gens l'ont consulté

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)
}
Copier après la connexion

Sortie

123
0
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal