golang中的单向channel和nil值channel

在阅读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.…