Heim > Backend-Entwicklung > Golang > Ist Golang Chan geschlossen?

Ist Golang Chan geschlossen?

(*-*)浩
Freigeben: 2019-12-13 11:45:24
Original
3115 Leute haben es durchsucht

Ist Golang Chan geschlossen?

Chan ist eine sehr wichtige Sache in Golang und wird für die Goroutine-Kommunikation verwendet , da Golang-Programme zwangsläufig mehrere Goroutinen haben werden, ist es sehr wichtig, wie diese Goroutinen synchronisiert werden.

Bei der Verwendung von Chan gibt es mehrere Erfahrungen: (Empfohlenes Lernen: GO )

Erstens wird es immer so sein ein Symbol & lt; Lesen oder Schreiben, wie z. B. v,ok := <-c liest und c <- v schreibt.

Zweitens, wenn es beim Lesen kein OK gibt, kann es auch gelesen werden. Wenn es jedoch geschlossen ist, kann es auch gelesen werden. Es gibt keine Zuweisung. Wenn Sie wissen möchten, ob es geschlossen ist, müssen Sie ok hinzufügen, es sei denn, chan wird nie geschlossen, andernfalls v,ok := < -c sollte zum Lesen anstelle von v := < ;-c verwendet werden.

Auch hier können Sie nicht in einen geschlossenen Kanal schreiben. Daher müssen Sie im Allgemeinen einen Signalkanal verwenden (im Allgemeinen ist der Puffer 1), um zu bestimmen, ob geschrieben oder aufgegeben werden soll. Verwenden Sie „select“, um festzustellen, ob der Schreibvorgang erfolgreich ist . oder es schließt sich und muss mit dem Schreiben aufhören.

Wenn Chan nach dem Schließen Daten hat, ist „ok“ immer noch „true“ und „false“, bis Chan keine Daten mehr hat.

Wenn ein Kanal geschlossen ist, wird der Abruf nicht blockiert, sondern gibt einen Nullwert zurück

package main
 
import "fmt"
 
func main() {
    c := make(chan int, 5)
    c <- 123
    close(c)
     
    fmt.Println(<-c)
    fmt.Println(<-c)
}
Nach dem Login kopieren

Ausgabe

123
0
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonIst Golang Chan geschlossen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage