通常都是定义读写双向的 chan,定义单向 chan 问题。
专栏的介绍可以参考 《GotchaGolang专栏》,代码可以看《宝库-Gotcha》。
通过 只写 chan 传递另一个只读的 chan,怎么写?
案例
平常一般是这么声明 chan 的:
1 | package main |
要声明一个单向的 chan 可以使用这一的方式:
1 | chan<- float64 // 只写 float64 类型变量 (write-only) |
传递 chan 变量怎么办?
1 | chan<- chan int //传递双向 chan, 同 chan<- (chan int) |
总结
定义只读,只写的类型,看上去比较诡异,可以把 <-chan
,chan<-
看做类型即可,同 chan
一样。
Merlin 2018.3 chan 的定义问题