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!