Heim  >  Artikel  >  Backend-Entwicklung  >  So ermitteln Sie, ob der Kanal in Golang geschlossen ist

So ermitteln Sie, ob der Kanal in Golang geschlossen ist

尚
Original
2020-01-13 09:31:459300Durchsuche

So ermitteln Sie, ob der Kanal in Golang geschlossen ist

Map ist eine ungeordnete Sammlung von Schlüssel-Wert-Paaren. Der wichtigste Punkt von Map besteht darin, Daten schnell über einen Schlüssel abzurufen, der einem Index ähnelt und auf den Wert der Daten verweist.

Map ist eine Sammlung, daher können wir darüber iterieren, genau wie Arrays und Slices. Map ist jedoch ungeordnet und wir können die Reihenfolge, in der es zurückgegeben wird, nicht bestimmen. Dies liegt daran, dass Map mithilfe einer Hash-Tabelle implementiert wird.

Werfen wir einen Blick auf die Methode zur Bestimmung, ob ein Kanal in Golang geschlossen ist:

Bestimmen Sie beim Lesen eines Kanals, ob er geschlossen wurde

_,ok := <- jobs

Wenn der Kanal zu diesem Zeitpunkt geschlossen ist, ist der ok-Wert falsch

Beim Schreiben in die Kanal, stellen Sie fest, ob er geschlossen wurde

1._,ok := <- jobs

Wenn der Kanal zu diesem Zeitpunkt geschlossen ist, wird der Der ok-Wert ist falsch. Wenn der Kanal nicht geschlossen ist, wird ein Job verpasst

2. Verwenden Sie die Auswahlmethode

, um einen weiteren Kanal zu erstellen. Wenn es zu einer Zeitüberschreitung kommt, senden Sie „true“ an diesen Kanal, und der Produzent sendet Daten an den Kanal des Jobs. Verwenden Sie „select“, um die Zeitüberschreitung zu überwachen. Wenn es zu einer Zeitüberschreitung kommt, schließen Sie den Jobkanal.

go func() {
 time.Sleep(time.Second * 3)
 timeout <- true
 }()
go func() {
 for i := 0; ; i++ {
 select {
     case <-timeout:
         close(jobs)
         return
 
     default:
         jobs <- i
         fmt.Println("produce:", i)
         }
     }
 }()

Für mehr Golang Wenn Sie über Kenntnisse verfügen, beachten Sie bitte die Spalte Golang-Tutorial auf der chinesischen PHP-Website.

Das obige ist der detaillierte Inhalt vonSo ermitteln Sie, ob der Kanal in Golang geschlossen ist. 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