Heim >Backend-Entwicklung >Golang >So schließen Sie den Kanal in Golang

So schließen Sie den Kanal in Golang

青灯夜游
青灯夜游Original
2023-01-11 11:12:232726Durchsuche

In Golang können Sie die Funktion close() verwenden, um den Kanal zu schließen. Die Syntax lautet „close(msg_chan)“. Der Kanal (Chan) ist eine Systemressource. Wenn Sie Chan also nicht verwenden müssen, müssen Sie die integrierte Funktion close verwenden, um die Pipe manuell zu schließen. Hinweis: Wenn Sie Daten an eine geschlossene Pipe senden, gerät das Programm in Panik.

So schließen Sie den Kanal in Golang

Die Betriebsumgebung dieses Tutorials: Windows 7-System, GO Version 1.18, Dell G3-Computer.

Channel (chan) in der Go-Sprache ist auch eine Systemressource. Wenn wir chan nicht verwenden müssen, müssen wir die Pipe daher manuell schließen. Um eine Pipe zu schließen, müssen Sie die integrierte Schließfunktion des Systems verwenden.

close() ist eine integrierte Funktion und setzt ein Flag, das angibt, dass keine weiteren Werte an den Kanal gesendet werden.

close(msg_chan)
Parameter Beschreibung
msg_chan Die Pipe, die geschlossen werden muss.

Sie können den Kanal auch mit einer for-Range-Schleife schließen. Hier kann die Empfänger-Goroutine mithilfe der angegebenen Syntax prüfen, ob der Kanal offen oder geschlossen ist:

ele, ok:= <- Mychannel

Wenn hier der Wert von ok wahr ist, bedeutet dies, dass der Kanal offen ist und daher der Lesevorgang ausgeführt werden kann . Wenn der Wert falsch ist, bedeutet dies, dass der Kanal geschlossen ist und daher kein Lesevorgang ausgeführt wird.

Erklärung

  • Nachdem wir Variablen verwendet haben, um die von der Pipeline zurückgegebenen Daten zu akzeptieren, gibt der zweite Rückgabewert vom Typ Bool an, ob die Pipeline geschlossen ist. Wenn er falsch ist, zeigt er an, dass die Pipeline geschlossen wurde.

Beispiel für das Schließen eines Kanals

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

So schließen Sie den Kanal in Golang

Senden Sie Daten an eine geschlossene Pipe. Das Programm gerät in Panik „Schließen“-Meldung: Nach dem Ausführen des Programms sehen wir, dass das Programm in Panik gerät, das heißt, die geschlossene Pipe kann keine Daten erneut senden, andernfalls gerät das Programm in Panik.

【Verwandte Empfehlungen:

Go-Video-TutorialSo schließen Sie den Kanal in Golang,

Programmierunterricht

Das obige ist der detaillierte Inhalt vonSo schließen Sie den Kanal in Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn