Maison >développement back-end >Golang >Comment fermer la chaîne dans Golang

Comment fermer la chaîne dans Golang

青灯夜游
青灯夜游original
2023-01-11 11:12:232713parcourir

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.

Comment fermer la chaîne dans Golang

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)
    }
}

Comment fermer la chaîne dans Golang

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"
}

Comment fermer la chaîne dans Golang

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!

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