Golang: Kann ich zu chan interface {}

8

Ich versuche, einen allgemeinen Wrapper für Abonnements zu schreiben, etwa wie folgt:

%Vor%

Angenommen, es gibt eine Bibliothek, die ich verwenden möchte und die eine subscribe-Methode enthält, die aber ein chan library.Object verwendet. Ich würde gerne etwas tun können wie:

%Vor%

Momentan glaube ich nicht, dass eine solche Besetzung möglich ist. Und ich möchte die zugrunde liegende Bibliothek nicht ändern, da der Wrapper von Bibliotheksimplementierungen unabhängig sein sollte.

Ich habe Is gesehen Es gibt eine Möglichkeit, Structs zum Senden über einen Kanal zu verwenden , aber in diesem Fall kann die Anwendung geändert werden, um dem Bedarf zu entsprechen. Hier kann es nicht. Ist das möglich? Gibt es einen besseren Weg?

Eine Lösung besteht darin, einen Allzweckkanal in Subscribe einzulesen und unbestimmt auf chan library.Object zu warten und alles abzufeuern, das auf meinem allgemeinen Kanal ankommt, aber ich wollte nicht unbedingt einen anderen Kanal einführen, nur um zu bekommen um den Typ Cast.

    
Ethan 31.08.2014, 15:19
quelle

2 Antworten

4

Nein, du kannst das nicht mit einem Cast machen. Sie müssen einen zusätzlichen Kanal verwenden, wie Sie bereits in Erwägung gezogen haben. Zum Glück gibt es dafür bereits eine Hilfs-Bibliothek (Disclaimer: Ich habe sie geschrieben). Sie möchten die Funktion Wrap .

Evan 31.08.2014, 18:19
quelle
1

Für jeden anderen, der auf dieses Problem stößt und einen Inline-Code möchte:

%Vor%     
Blaskovicz 31.10.2017 18:50
quelle