草庐IT

interface - Golang : Can I cast to chan interface{}

我正在尝试为订阅编写一个通用包装器,例如:typeSubscriberinterface{Subscribe(addrstring)chaninterface{}}假设我想使用一个库,其中有一个订阅方法,但它使用chanlibrary.Object。我希望能够做类似的事情:func(s*mySubscriber)Subscribe(addrstring)chaninterface{}{ch:=make(chanlibrary.Object)library.Subscribe(addr,ch)returnchaninterface{}(ch)}目前,我认为这样的Actor阵容是不可能的。

Go chan解析

1.chan数据结构   一个channel只能传递一种类型的值,类型信息存储在hchan数据结构中。elemtype代表类型,用于数据传递过程中的赋值;elemsize代表类型大小,用于在buf中定位元素位置。一个channel同时仅允许被一个goroutine读写,为简单起见,本章后续部分说明读写过程时不再涉及加锁和解锁。2.创建Chan创建channel的过程实际上是初始化hchan结构。其中类型信息和缓冲区长度由make语句传入,buf的大小则与元素大小和缓冲区长度共同决定。 makeChan源码如下:funcmakechan(t*chantype,sizeint)*hchan{ele

Go chan解析

1.chan数据结构   一个channel只能传递一种类型的值,类型信息存储在hchan数据结构中。elemtype代表类型,用于数据传递过程中的赋值;elemsize代表类型大小,用于在buf中定位元素位置。一个channel同时仅允许被一个goroutine读写,为简单起见,本章后续部分说明读写过程时不再涉及加锁和解锁。2.创建Chan创建channel的过程实际上是初始化hchan结构。其中类型信息和缓冲区长度由make语句传入,buf的大小则与元素大小和缓冲区长度共同决定。 makeChan源码如下:funcmakechan(t*chantype,sizeint)*hchan{ele