Maison > Article > développement back-end > qu'est-ce que la chaîne Golang
Le canal en langage Go est le mécanisme clé pour obtenir une communication sans verrouillage entre les goroutines. Il rend l'écriture de programmes simultanés multithread simple, flexible et accessible.
Le canal est un type de base dans Go. Vous pouvez le considérer comme un canal, à travers lequel des unités principales concurrentes peuvent envoyer ou recevoir des données pour la communication. (Apprentissage recommandé : go)
Son opérateur est la flèche <-.
ch <- v // 发送值v到Channel ch中 v := <-ch // 从Channel ch中接收数据,并将数据赋值给v
structure des chaînes
type hchan struct { qcount uint // total data in the queue 队列中存在的个数 dataqsiz uint // size of the circular queue buffer大小 实现看起来是个循环数组 buf unsafe.Pointer // points to an array of dataqsiz elements 数组指针 elemsize uint16 //channel类型的大小 closed uint32 //channel是否关闭 elemtype *_type // element type //channel 类型 sendx uint // send index //发送index recvx uint // receive index //接收index recvq waitq // list of recv waiters //接收链表 即读channel的goroutine sendq waitq // list of send waiters //发送链表 即写channel的goroutine // lock protects all fields in hchan, as well as several // fields in sudogs blocked on this channel. // // Do not change another G's status while holding this lock // (in particular, do not ready a G), as this can deadlock // with stack shrinking. lock mutex }
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!