func worker(id int,jobs< -chan int,results chan< - int){
对于j:=范围工作{
 fmt.Println(“worker”,id,“处理作业”,j)
 time.Sleep(time.Second)
结果< -j * 2
 }
}

 func main(){
 t:= time.Now()
 fmt.Println(T)
 jobs:= make(chan int,100)
结果:= make(chan int,100)
对于w:= 1; w< = 4; w ++ {
去工人(w,工作,结果)
 }
对于j:= 1; j< = 20; j ++ {
工作< -j
 }
接近(工种)
对于a:= 1; a< = 20; a ++ {
 < - 结果
 }

 t = time.Now()
 fmt.Println(t)
}



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

答案 0 :(得分:5)
这与Go中的频道有关。您认为它与其他语言的作业相关。在你的代码中,一个值" j"被送到渠道"工作"。
答案 1 :(得分:5)
= operator与大多数语言一样处理变量赋值。它表达了想要更新标识符引用的值的想法。 <-
operator表示将值从通道传递给引用的想法。如果您将通道视为使用赋值运算符=
的队列,则会将对队列的引用分配给目标变量。接收运算符<-
等同于从队列中出队并将项的值分配给目标变量。
由于类型不匹配,您无法互换使用运算符。请注意Go规范的链接,这些链接对操作员来说更长。
答案 2 :(得分:3)