我正在尝试为订阅编写一个通用包装器,例如:
type Subscriber interface{
Subscribe(addr string) chan interface{}
}
假设有一个我想使用的库,它有一个 subscribe 方法,但它使用chan library.Object. 我希望能够执行以下操作:
func (s *mySubscriber) Subscribe(addr string) chan interface{}{
ch := make(chan library.Object)
library.Subscribe(addr, ch)
return chan interface{}(ch)
}
目前,我不相信这样的演员阵容是可能的。而且我不想修改底层库,因为包装器应该与库实现无关。
我已经看到有没有办法将结构转换为通过通道发送,但在这种情况下,可以修改应用程序以满足需要。在这里,不能。这可能吗?有没有更好的办法?
一种解决方案是将通用通道传入 Subscribe,并无限期地等待chan library.Object和触发通过我的通用通道的任何内容,但我并不特别喜欢为了绕过类型转换而必须引入另一个通道。
慕森卡
相关分类