在阅读client-go代码时发现源码对channel的部分使用方式不太理解,一个是单项channel的使用,一个是nil值channel的使用,于是搜索总结一下。
在golang中可以定义channel为双向的,也可以将channel定义为只能接收或只能发送类型的,如下面所示:
// You can edit this code!
// Click here and start typing.
package main
func main() {
// 普通双向的
var normalCh chan interface{}
// 只能发送
var sendOnlyCh chan<- interface{}
// 只能接收
var receiveOnlyCh <-chan interface{}
<-sendOnlyCh
receiveOnlyCh <- 1
}
编译上述代码,将会得到下列错误:
./prog.go:12:2: invalid operation: <-sendOnlyCh (receive from send-only type chan<- interface {})
./prog.go:13:16: invalid operation: receiveOnlyCh <- 1 (send to receive-only type <-chan interface {})
Go build failed.…
golang中的单向channel和nil值channel
发布于