b***i 发帖数: 3043 | 1 上周上了一个课。老师讲了个例子
func main(){
ch:=make(chan int)
go func(c chan int){
d:=<-c
fmt.Print(d)
}
3<-ch
}
会直接退出没有显示。结果演示的时候有显示。他说大部分是不会显示的,因为打印语
句很慢。
我当场就觉得他讲错了。这是因为go routine开始的时候并没有执行,然后在ch<-3的
时候才转到go routine因为执行不下去了需要有变量的读出这个channel。当d取出后,
并没有进行routine转移的指令,没有yield,所以整个函数执行完后才回到原来停下来
的地方。
不知道我说的对不对。 |
c*******v 发帖数: 2599 | 2 语法错误跑不出。不如你fix,跑10次,看看结果?
【在 b***i 的大作中提到】 : 上周上了一个课。老师讲了个例子 : func main(){ : ch:=make(chan int) : go func(c chan int){ : d:=<-c : fmt.Print(d) : } : 3<-ch : } : 会直接退出没有显示。结果演示的时候有显示。他说大部分是不会显示的,因为打印语
|
l*********s 发帖数: 5409 | 3 You are right.
【在 b***i 的大作中提到】 : 上周上了一个课。老师讲了个例子 : func main(){ : ch:=make(chan int) : go func(c chan int){ : d:=<-c : fmt.Print(d) : } : 3<-ch : } : 会直接退出没有显示。结果演示的时候有显示。他说大部分是不会显示的,因为打印语
|