Wie wählt man in Go eine Eingabe für eine dynamische Liste von Kanälen?

8

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?

    
poolie 18.11.2010, 23:30
quelle

4 Antworten

4

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.

    
Kevin Ballard 19.11.2010, 00:18
quelle
5

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     
Dustin 24.07.2013 04:08
quelle
4
%Vor%

druckt [0 1][1 2] (oder vielleicht [1 2][0 1] ).

    
ephemient 19.11.2010 00:27
quelle
0

Vielleicht kann so etwas zutreffen?

%Vor%     
dyoo 23.07.2013 19:52
quelle

Tags und Links