Go verfügt über einen Mechanismus, um einen blockierenden Lesevorgang von einem der verschiedenen Kanäle auszuführen. Wählen Sie aus. Du kannst also sagen
%Vor%wird blockiert, bis wir von einem dieser beiden Kanäle Eingaben erhalten. Sehr schön.
Aber das erfordert, dass ich im Quellcode festlege, wie viele Kanäle ich abfragen möchte. Was ist, wenn ich eine Scheibe oder ein Array von Kanälen habe und blockieren möchte, bis ich eine Eingabe von ihnen bekomme?
Nur ein Gedanke, aber Sie könnten ein Multiplexing-Muster verwenden, wo Sie eine Goroutine mit 2 Kanälen abspotten, die beide blockiert und die Ausgabe an einen neuen Kanal sendet. Dann können Sie einfach einen Baum dynamisch aus Ihrer Liste aufbauen, der alles auf einen Kanal leitet, den Sie dann weiterlesen.
Seit go1.1 gibt es eine richtige API, um Selektionen dynamisch auszuführen.
Hier ist ein vollständiges und brauchbares Beispiel:
%Vor%Sie können interaktiv auf dem Spielplatz
herumspielen