golang中=和< - 之间有什么区别

时间:2015-10-25 01:59:19

标签: go

  func worker(id int,jobs&lt; -chan int,results chan&lt;  -  int){&#xA;对于j:=范围工作{&#xA; fmt.Println(“worker”,id,“处理作业”,j)&#xA; time.Sleep(time.Second)&#XA;结果&lt; -j * 2&#xA; }&#xA;}&#xA;&#xA; func main(){&#xA; t:= time.Now()&#xA; fmt.Println(T)&#XA; jobs:= make(chan int,100)&#xA;结果:= make(chan int,100)&#xA;对于w:= 1; w&lt; = 4; w ++ {&#xA;去工人(w,工作,结果)&#xA; }&#XA;对于j:= 1; j&lt; = 20; j ++ {&#xA;工作&lt; -j&#xA; }&#XA;接近(工种)&#XA;对于a:= 1; a&lt; = 20; a ++ {&#xA; &LT;  - 结果&#XA; }&#XA;&#XA; t = time.Now()&#xA; fmt.Println(t)&#xA;}&#xA;  
&#xA;&#xA;

我对“&lt; - ”感到困惑,我找不到任何关于“&lt; - ”的相关文件。那么&lt; - 和= ??之间的区别是什么?为什么我不能在这里使用?

&#xA;

3 个答案:

答案 0 :(得分:5)

这与Go中的频道有关。您认为它与其他语言的作业相关。在你的代码中,一个值&#34; j&#34;被送到渠道&#34;工作&#34;。

https://gobyexample.com/channels

答案 1 :(得分:5)

= operator与大多数语言一样处理变量赋值。它表达了想要更新标识符引用的值的想法。 <- operator表示将值从通道传递给引用的想法。如果您将通道视为使用赋值运算符=的队列,则会将对队列的引用分配给目标变量。接收运算符<-等同于从队列中出队并将项的值分配给目标变量。

由于类型不匹配,您无法互换使用运算符。请注意Go规范的链接,这些链接对操作员来说更长。

答案 2 :(得分:3)

  • “=”是指派,就像其他语言一样。
  • &lt; - 是运营商仅使用频道,这意味着获取来自频道的消息。
  • 频道是一个重要的概念,特别是在并发编程中。您可以尝试使用此Channel TourPage来查看其使用场景。