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) }
Ausgabe
123 0
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!