Heim  >  Artikel  >  Backend-Entwicklung  >  Über das Verständnis von select in Golang

Über das Verständnis von select in Golang

藏色散人
藏色散人nach vorne
2020-08-26 11:46:452751Durchsuche

, um Ihnen Ihr Verständnis von Select in Golang näher zu bringen. Ich hoffe, Freunden zu helfen, die es brauchen!

Die Syntax der Select-Anweisung und der Switch-Anweisung ist sehr ähnlich, aber der Fall in Select muss eine Kommunikationsoperation (eine Kanaloperation) sein. Die Ausführungslogik lautet: Über das Verständnis von select in GolangWelche Kanaloperation hinter dem Case erfolgreich ausgeführt werden kann, dann wird der Codeblock unter dem Case ausgeführt

. Können mehrere Fälle gleichzeitig erfolgreich ausgeführt werden, wird einer davon zufällig ausgewählt. Wenn keiner der Fälle erfolgreich ausgeführt werden kann, wird der standardmäßige Codeblock ausgeführt. Wenn es keinen Standardwert gibt, wird es blockiert und ein Deadlock-Fehler zurückgegeben.

E/A-Vorgänge überwachen und entsprechende Aktionen auslösen, wenn E/A-Vorgänge auftreten.

Diese Aussage ist in der Tat das Anwendungsszenario von Select, aber verwechseln Sie sie nicht mit der Select-Anweisung In diesem Fall wird die Channel-Operation ausgeführt! Dieses Verständnis ist falsch! Was Select tatsächlich auswählt, ist der Fall, in dem die Kanaloperation erfolgreich ausgeführt werden kann, und dann wird der Codeblock in diesem Fall ausgeführt.

Zum Beispiel, wenn ein Kanal c1 mit einem Datenelement geschrieben wird

c1 := make(chan string, 1)c1 <- "Hello World!"

Wenn wir die folgende Select-Beurteilungsaussage haben
select {
    case <-c1:
        fmt.Println("Case 1 is selected")
    case c1<-"Hello World!":
        fmt.Println("Case 2 is selected")
    default :
        fmt.Println("Default is selected")}

Sie erhalten die folgenden Ergebnisse

Case 1 is selected

Da c1 mit einem Datenelement geschrieben wird, Wir können erfolgreich „von c1 ein Datenelement lesen“. Das heißt, der erste Fall kann erfolgreich ausgeführt werden. Daher wird der Codeblock im ersten Fall schließlich ausgeführt.

                                                                                                             

Das obige ist der detaillierte Inhalt vonÜber das Verständnis von select in Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen