channel调用
来源:11-1 channel

慕前端4885459
2019-11-13
为什么不会在w<-3的时候就调用doWorker,而是会在w<-4后才调用呢
package main
import (
"fmt"
"time"
)
func doWorker(c chan int) {
fmt.Println(len(c))
n := <-c
fmt.Println(n)
n = <-c
fmt.Println(n)
}
func createChannel() chan int{
c := make(chan int)
go doWorker(c)
return c
}
func main() {
w := createChannel()
w<-3
w<-4
//w2<-4
time.Sleep(time.Millisecond)
fmt.Println(w)
}
写回答
1回答
-
它在运行go doWorker(c)的时候就调用了。doWorker已经在工作了。
w<-3的时候就会切换到doWorker这个goroutine去收3
你是怎么得出“会在w<-4后才调用”的呢?
012019-11-15
相似问题