如何在Go中不要对频道方向感到困惑?

时间:2019-12-11 10:17:19

标签: go concurrency channel

我是Go中的新手,如果我的问题看起来很愚蠢,请对不起。

我真的很难在Golang中获得频道语法和词汇,尤其是关于方向的时候。

当我看到c chan<- int是一个“仅发送”通道时,我知道该通道只能发送数据。但这似乎是相反的,我们只能将内容放入此chan中。

与“仅接收”通道c <-chan int相同:对我来说,这是一个只能接收数据的通道,但看来这种通道只能发送数据而不能接收某些数据。

看,我真的很困惑,因此,如果您有更好的解释方式,或者是一种通俗易懂的助记符方式,我将在余下的时间里感谢您!

1 个答案:

答案 0 :(得分:2)

频道无法发送或接收数据。 可以在通道上发送数据,并且可以从通道 接收数据。方向就是它的名字。

还请注意,“箭头”将方向可视化。如果它像chan一样指向频道(朝c chan<- int指向),则为仅发送。如果它像chan那样远离频道(在c <-chan int之外),则表示它是仅接收的。

Same实际上是在其上发送任何内容(Send statement,例如c <- 1,或从其中接收某些内容(Receive operator),例如a = <-c