Comment fermer la chaîne dans Golang
En golang, vous pouvez utiliser la fonction close() pour fermer le canal, la syntaxe est "close(msg_chan)". Le canal (chan) est une ressource système, donc lorsque vous n'avez pas besoin d'utiliser chan, vous devez utiliser la fonction intégrée close pour fermer manuellement le canal. Remarque : Si vous envoyez des données vers un canal fermé, le programme paniquera.
L'environnement d'exploitation de ce tutoriel : système Windows 7, GO version 1.18, ordinateur Dell G3.
Channel (chan) en langage Go est également une ressource système. Par conséquent, lorsque nous n'avons pas besoin d'utiliser chan, nous devons fermer manuellement le canal. Pour fermer un tuyau, vous devez utiliser la fonction de fermeture intégrée du système.
close() est une fonction intégrée et définit un indicateur indiquant qu'aucune autre valeur ne sera envoyée au canal.
close(msg_chan)
Paramètres | Description |
---|---|
msg_chan | Le tuyau qui doit être fermé. |
Vous pouvez également utiliser une boucle for range pour fermer le canal. Ici, la goroutine du récepteur peut vérifier si le canal est ouvert ou fermé à l'aide de la syntaxe donnée :
ele, ok:= <- Mychannel
Ici, si la valeur de ok est vraie, cela signifie que le canal est ouvert et donc l'opération de lecture peut être effectuée . Et si la valeur de est fausse, cela signifie que le canal est fermé, donc aucune opération de lecture ne sera effectuée.
Explication
Après avoir utilisé des variables pour accepter les données renvoyées par le pipeline, la deuxième valeur de retour de type booléen indique si le pipeline est fermé. Si elle est fausse, elle indique que le pipeline a été fermé.
Exemple de fermeture d'un canal
//Go程序说明如何 //关闭使用的通道 //range循环和关闭函数 package main import "fmt" func myfun(mychnl chan string) { for v := 0; v < 4; v++ { mychnl <- "nhooo" } close(mychnl) } func main() { //创建通道 c := make(chan string) // 使用 Goroutine go myfun(c) //当ok的值为为true时,表示通道已打开,可以发送或接收数据 //当ok的值设置为false时,表示通道已关闭 for { res, ok := <-c if ok == false { fmt.Println("通道关闭 ", ok) break } fmt.Println("通道打开 ", res, ok) } }
Envoyer des données à un tube fermé, le programme paniquera
package main import "fmt" func main() { fmt.Println("嗨客网(www.haicoder.net)") ch := make(chan string, 5) ch <- "Hello" ch <- "HaiCoder" ch <- "Python" close(ch) ch <- "Close" }
Après avoir fermé le tube, nous utilisons à nouveau le tube fermé pour envoyer un "Fermer" », après avoir exécuté le programme, nous voyons que le programme panique, c'est-à-dire que le canal fermé ne peut pas envoyer de données à nouveau, sinon le programme paniquera.
【Recommandations associées : Tutoriel vidéo Go, Enseignement de la programmation】
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

Video Face Swap
Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

La bibliothèque utilisée pour le fonctionnement du numéro de point flottante dans le langage go présente comment s'assurer que la précision est ...

Problème de threading de file d'attente dans Go Crawler Colly explore le problème de l'utilisation de la bibliothèque Crawler Crawler dans le langage Go, les développeurs rencontrent souvent des problèmes avec les threads et les files d'attente de demande. � ...

La différence entre l'impression de chaîne dans le langage go: la différence dans l'effet de l'utilisation de fonctions println et string () est en Go ...

Le problème de l'utilisation de Redessstream pour implémenter les files d'attente de messages dans le langage GO consiste à utiliser le langage GO et redis ...

Que dois-je faire si les étiquettes de structure personnalisées à Goland ne sont pas affichées? Lorsque vous utilisez Goland pour le développement du langage GO, de nombreux développeurs rencontreront des balises de structure personnalisées ...

GO Language fonctionne bien dans la construction de systèmes efficaces et évolutifs. Ses avantages incluent: 1. Haute performance: compilé en code machine, vitesse de course rapide; 2. Programmation simultanée: simplifier le multitâche via les goroutines et les canaux; 3. Simplicité: syntaxe concise, réduction des coûts d'apprentissage et de maintenance; 4. Plate-forme multipliée: prend en charge la compilation multiplateforme, déploiement facile.

Quelles bibliothèques de GO sont développées par de grandes entreprises ou des projets open source bien connus? Lors de la programmation en Go, les développeurs rencontrent souvent des besoins communs, ...

Gérez efficacement les problèmes de sécurité de la concurrence dans la rédaction de journaux multiproces. Plusieurs processus écrivent le même fichier journal en même temps. Comment s'assurer que la concurrence est sûre et efficace? C'est un ...
