在无缓冲通道中,默认发送和接收阻塞,直到发送者和接收者都准备好。
package main
import (
"fmt"
"time"
)
func worker(done chan bool) {
fmt.Print("working...")
fmt.Println("done")
done <- true
}
func main() {
done := make(chan bool)
go worker(done)
time.Sleep(5 * time.Second)
<-done
}
但是上面的代码是立即执行的。应该要等5秒吧?
如果您在操场上运行上述内容,那么我猜您遇到了与此问题相同的情况如果没有进一步的语句要执行,为什么 time.Sleep 不起作用?