Golang中=和<-有什么区别

怀亚特(Wyatt):
func worker(id int, jobs <-chan int, results chan<- int) {
    for j := range jobs {
        fmt.Println("worker", id, "processing job", j)
        time.Sleep(time.Second)
        results <- j * 2
    }
}

func main() {
    t := time.Now()
    fmt.Println(t)
    jobs := make(chan int, 100)
    results := make(chan int, 100)
    for w := 1; w <= 4; w++ {
        go worker(w, jobs, results)
    }
    for j := 1; j <= 20; j++ {
        jobs <- j
    }
    close(jobs)
    for a := 1; a <= 20; a++ {
        <-results
    }

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

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

罗伯:

这与Go中的频道有关。您认为它与其他语言一样与分配有关。在您的代码中,值“ j”被发送到通道“ jobs”。

https://gobyexample.com/channels

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章