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:
Implikationen für den angegebenen Code
Im bereitgestellten Beispiel Folgendes tritt auf:
case ch2 <- (<-ch1):
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!