如何不混淆 Go 中的通道方向?

How to be not confused about a channel direction in Go?

我是 Go 的新手,如果我的问题看起来很愚蠢,我很抱歉。

我真的很难掌握 Golang 中的通道语法和词汇,尤其是关于方向的时候。

当我读到c chan<- int是一个"send-only"通道时,我明白了这个通道只能发送数据。但似乎恰恰相反,我们只能把东西放到这个chan里。

"receive-only"通道也是如此c <-chan int:对我来说它是一个只能接收数据的通道,但似乎这种通道只能发送数据而不能接收一些数据。

看,我真的很困惑,所以如果你有更好的解释方式,或者更好的助记方式来理解它,我会在余下的日子里感谢你!

通道无法发送或接收数据。 可以在频道上发送数据,您可以频道接收数据。然后方向就是它的名字所说的。

另请注意,"arrow" 可视化了方向。如果它像 c chan<- int 一样指向通道(指向 chan),则它是只发送的。如果它像 c <-chan int 那样指向远离通道的方向(chan 之外),它就是只接收。

实际发送任何东西(Send statement) like c <- 1, or receiving something from it (Receive operator)也是如此,例如 a = <-c