「非自定义函数」,码农们的表述怎么都这么奇怪。
啥都喜欢加个「非」,你就直接叫「库函数」不好吗?
你这和是不是自定义函数没关系,关键是你得知道实参的求值时机。
尽管你写了 go xxx,但是实参的求值是立即的,函数本身的执行是在 Go 程里。
所以你这段代码相当于:
c := make(chan int)
x := <-c
go fmt.Println(x)
不锁你锁谁。
【 在 nextworld8 的大作中提到: 】
: go线程执行非自定义函数报死锁错误
: var c chan int = make(chan int)
: go fmt.Println(<-c)
: c <- 1
: var s string
: fmt.Scanln(&s)
: -----
: fatal error: all goroutines are asleep - deadlock!
: 把 fmt.Println(<-c) 放在函数内就没问题
: 真是奇怪了
--
FROM 27.38.197.*