Wie verwende ich die Select-Anweisung in Golang?

Wie Verwende Ich Die Select Anweisung In Golang



A Aussage auswählen in Golang ermöglicht es Entwicklern, die Go-Routinen, -Kanäle und -Datenströme zu synchronisieren und zwischen ihnen zu kommunizieren. Es ermöglicht einem Go-Programm, auf mehrere Kanaloperationen gleichzeitig zu warten und die erste Operation auszuführen, die bereit ist.

In diesem Artikel werden wir die Verwendung untersuchen Aussage auswählen in Golang und liefern Beispiele, die Ihnen dabei helfen, Parallelität, Parallelität und Synchronisation in Go-Programmen zu erreichen.

Wie verwende ich die Select-Anweisung in Golang?

Ähnlich wie bei der switch-Anweisung ist die Aussage auswählen ermöglicht es uns, einen Ausdruck unter vielen Ausdrücken auszuwählen und auszuführen, aber der Hauptunterschied zwischen wählen und Schalter ist, dass die Aussage auswählen funktioniert nach dem Wait-Prinzip, was bedeutet, dass die Aussage auswählen wird erst ausgeführt, wenn die Kommunikation abgeschlossen ist.







Hier bezieht sich Kommunikation auf das Senden und Empfangen von Daten über einen bestimmten Kanal. Wenn die Kommunikation abgeschlossen ist, wird die nächste Prüfung durchgeführt, die uns zeigt, dass die Select-Anweisung der Go-Sprache vollständig vom Kanal abhängt.



Syntax für Select-Anweisung

Die einfache Syntax für die Aussage auswählen Die Verwendung der Go-Sprache wird unten gezeigt:



wählen {
Fall Kanal 1 :
// auszuführender Code, wenn channel_1 bereit ist
Fall Kanal_2 :
// Code, der ausgeführt werden soll, wenn channel_2 bereit ist
Fall Kanal_3 :
// auszuführender Code, wenn channel_3 bereit ist
Fall Kanal_4 :
// Code, der ausgeführt werden soll, wenn channel_4 bereit ist
Standard :
// auszuführender Code, wenn keiner der Kanäle bereit ist
}

Hier:





  • Innerhalb eines Aussage auswählen , stellt jeder Fall eine Kanaloperation dar, die eine Empfangsoperation oder eine Sendeoperation sein kann.
  • Der Aussage auswählen wartet, bis einer der Fälle bereit ist, und führt ihn dann und die zugehörige case-Anweisung aus.
  • Es wählt den Kanal nach dem Zufallsprinzip aus, falls mehrere Kanäle zur Ausführung bereit sind.

So erstellen Sie einen Kanal in Golang

Um einen Kanal in Go zu erstellen, können die Benutzer die Make-Funktion gefolgt von der verwenden Chan Schlüsselwort und geben Sie den Kanaltyp an, der int, string oder andere sein kann.

CH := machen ( Chan-Typ )

Implementieren Sie die Select-Anweisung in Golang

Hier stellen wir Ihnen einige Beispiele zur Verfügung, die Ihnen dabei helfen sollen, die Grundlagen der Verwendung von zu erlernen Aussage auswählen in Golang.



Beispiel 1

Das folgende Beispiel für die Aussage auswählen zeigt, wie es funktioniert, wenn beide Kanäle zur Ausführung bereit sind.

Paket Haupt

importieren 'fmt'

func main ( ) {

Auf eins := machen ( Chan int )

Str := machen ( Chan-String )

gehe chan_num ( Auf eins )

gehe chan_str ( Str )

wählen {

Fall Ch1 := <- Auf eins :

fmt. Druckln ( 'Kanaldaten:' , Ch1 )

Fall Ch2 := <- Str :

fmt. Druckln ( 'Kanaldaten:' , Ch2 )

}

}

func chan_num ( Anzahl Kanäle int ) {

Auf eins <- 67

}

Funktion chan_str ( str chan-String ) {

Str <- 'Linux'

}

Im obigen Beispiel haben wir zwei Kanäle erstellt, Auf eins, Und Str und wir haben die Go-Funktionen verwendet chan_num() um Daten an den Num-Kanal zu senden und chan_str() um Daten an den str-Kanal zu senden. Da das Programm zwei verschiedene Kanäle enthält, haben wir die verwendet Aussage auswählen einen von ihnen zu exekutieren.

Fall Ch1 liest den Wert aus der num Kanal und zeigt es an. Ebenso Fall Ch2 gibt den Wert von zurück Str Kanal. Das obige Programm gibt die Ausgabe des Kanals zurück, der zur Verwendung bereit ist. Ausgang

Beispiel 2

Wenn Sie einem Kanal eine Verzögerung hinzufügen und den Ausgang eines anderen Kanals zurückgeben möchten, können Sie die verwenden time.sleep() Funktion auf einem bestimmten Kanal. Dadurch können Sie die Ausgabe des anderen Kanals auf der Konsole ausgeben. Hier ist ein Beispiel für einen solchen Fall.

Paket Haupt

importieren (

'fmt'

'Zeit'

)

func main ( ) {

Auf eins := machen ( Chan int )

Str := machen ( Chan-String )

gehe chan_num ( Auf eins )

gehe chan_str ( Str )

wählen {

Fall Ch1 := <- Auf eins :

fmt. Druckln ( 'Kanaldaten:' , Ch1 )

Fall Ch2 := <- Str :

fmt. Druckln ( 'Kanaldaten:' , Ch2 )

}

}

func chan_num ( Anzahl Kanäle int ) {

Auf eins <- 67

}

Funktion chan_str ( str chan-String ) {

Zeit . Schlafen ( 5 * Zeit . Zweite )

Str <- 'Linux'

}

Im oben angegebenen Code haben wir die time.Sleep() Funktion innerhalb der chan_str() Funktion. Nur der Num-Kanal ist für die ersten 5 Sekunden zur Ausführung bereit. Dadurch ist die Aussage auswählen läuft Fall Ch1 .

Ausgang

Notiz: Sie können beiden Kanälen eine Verzögerung hinzufügen, um die Ausführung von Kanälen zu verzögern.

Abschluss

Der Aussage auswählen in Go ermöglicht die Auswahl und Ausführung eines Ausdrucks aus vielen Ausdrücken unter Verwendung des Warteprinzips, bei dem die Anweisung nicht ausgeführt wird, bis die Kommunikation abgeschlossen ist. Die oben genannten Richtlinien beinhalten Aussage auswählen grundlegende Syntax und Beispiele.