相关疑难解决方法(0)

Golang:我可以转换为chan接口{}

我正在尝试为订阅编写一个通用的包装器,例如:

type Subscriber interface{
    Subscribe(addr string) chan interface{}
}
Run Code Online (Sandbox Code Playgroud)

假设有一个我想要使用的库,其中有一个订阅方法,但它使用了一个chan library.Object.我希望能够做到这样的事情:

func (s *mySubscriber) Subscribe(addr string) chan interface{}{
    ch := make(chan library.Object)
    library.Subscribe(addr, ch)
    return chan interface{}(ch)
}
Run Code Online (Sandbox Code Playgroud)

目前,我不相信这样的演员是可能的.我不想修改底层库,因为包装器应该与库实现无关.

我已经看到有没有办法将Structs转换为通过通道发送,但在这种情况下,可以修改应用程序以满足需要.在这里,它不能.这可能吗?有没有更好的办法?

一种解决方案是将一个通用通道传递给Subscribe,并且无限制地等待chan library.Object并触发通用通道上发生的任何事情,但我并不特别喜欢为了绕过类型转换而引入另一个通道.

casting interface channel go publish-subscribe

11
推荐指数
1
解决办法
7496
查看次数

标签 统计

casting ×1

channel ×1

go ×1

interface ×1

publish-subscribe ×1