Heim >Backend-Entwicklung >Golang >Wählt „Wählen' „Empfangen' oder „Senden' im Fall von ch2 aus

Wählt „Wählen' „Empfangen' oder „Senden' im Fall von ch2 aus

Barbara Streisand
Barbara StreisandOriginal
2024-11-15 07:58:02814Durchsuche

Does `select` Choose to Receive or Send in `case ch2

Empfangen und Senden innerhalb einer einzigen Case-Anweisung

In Go ist es möglich, Empfangs- und Sendevorgänge innerhalb derselben Select-Case-Anweisung zu kombinieren. wie dieses Code-Snippet zeigt:

for {
    select {
    ...
    case ch2 <- (<-ch1):
    ...
    }
}

Dieser Code zielt darauf ab, die Ergebnisse von Kanal ch1 an Kanal ch2 weiterzuleiten. Es stellt sich jedoch die Frage, bei welcher Operation, Empfangen von Kanal 1 oder Senden an Kanal 2, die Select-Anweisung auswählt.

Der Auswahlprozess

Wie im Go erklärt Dokumentation, wenn Sie eine SELECT-Anweisung eingeben:

  • Kanalausdrücke in Empfangsoperationen und Sendeanweisungen werden ausgewertet und ergeben einen Satz zu empfangender Kanäle from oder send to, zusammen mit den entsprechenden Werten zum Senden.
  • Alle Nebenwirkungen treten sofort während dieser Auswertung auf.
  • Ausdrücke auf der linken Seite einer Empfangsoperation mit einer kurzen Variablendeklaration oder Zuweisung wird nicht ausgewertet.

Implikationen für den angegebenen Code

Im bereitgestellten Beispiel Folgendes tritt auf:

case ch2 <- (<-ch1):
  • Der Ausdruck <-ch1 wird ausgewertet und blockiert sofort den Empfang von ch1.
  • Der resultierende Wert wird in der temporären Variablen auf der linken Seite gespeichert. Handseite der Zuweisung.
  • Die Select-Anweisung steuert dann, ob der Sendevorgang auf Kanal 2 ausgeführt wird auftritt.

Daher wählt die Select-Anweisung aus, ob der empfangene Wert von Kanal 1 an Kanal 2 gesendet oder ein anderer Fall behandelt werden soll.

Nebenwirkung

Es ist wichtig zu beachten, dass der Wert auch dann verbraucht und verworfen wird, wenn der Empfangsvorgang von Kanal 1 letztendlich nicht ausgewählt wird. Dieses Verhalten kann erheblich sein und sollte bei der Verwendung dieses Musters berücksichtigt werden.

Das obige ist der detaillierte Inhalt vonWählt „Wählen' „Empfangen' oder „Senden' im Fall von ch2 aus. 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