使用Go通过频道发送频道

Dav*_*ave 2 concurrency channel go

我想通过一个频道发送一个指向频道的指针.Go有可能吗?如何定义接受此类渠道的功能?

我试过了:

func test() (chan *chan)
func test() (chan chan)
Run Code Online (Sandbox Code Playgroud)

Cer*_*món 10

总有一些类型与频道相关联.我们假设类型是T.T的频道是:

chan T
Run Code Online (Sandbox Code Playgroud)

指向T通道的指针是:

*chan T
Run Code Online (Sandbox Code Playgroud)

指向T通道的指针通道是:

chan *chan T
Run Code Online (Sandbox Code Playgroud)

接受指向T通道的指针通道的功能是:

func f(c chan *chan T) { }
Run Code Online (Sandbox Code Playgroud)

因为通道是引用类型,所以您可能不需要使用指针.尝试使用

 func (f c chan chan T) { }
Run Code Online (Sandbox Code Playgroud)

playground example