如何不混淆 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
。
我是 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
。