Go 对堵塞通道感到困惑吗
我有一段代码,它应该在程序退出前等待10秒,但只有在我为它添加某种打印内容之后,它才能工作。为什么呢?我希望它等待10秒钟,而不必取消对print语句的注释Go 对堵塞通道感到困惑吗,go,Go,我有一段代码,它应该在程序退出前等待10秒,但只有在我为它添加某种打印内容之后,它才能工作。为什么呢?我希望它等待10秒钟,而不必取消对print语句的注释 func main() { forever := make(chan bool) go func() { fmt.Println("why") time.Sleep(10*time.Second) //fmt.Println("here") forever <- false }() f
func main() {
forever := make(chan bool)
go func() {
fmt.Println("why")
time.Sleep(10*time.Second)
//fmt.Println("here")
forever <- false
}()
fmt.Println("forever")
<- forever
}
func main(){
永远:=制造(陈波)
go func(){
fmt.Println(“为什么”)
时间。睡眠(10*时间。秒)
//fmt.Println(“此处”)
永远从技术上讲,这是操场的一个“功能”。当所有东西都在操场上等待时间被阻塞时,时间会人为地向前推进,直到事情解除阻塞……或者它决定事情真的陷入僵局。请参阅中的“假时间”部分。从技术上讲,这是一个“功能”在操场上,当所有的事情都被阻塞了,在操场上等待时间,时间会人为地前进,直到事情解除阻塞…或者它决定事情真的陷入僵局。参见“假装时间”.中的部分,我无法重现您的问题。目前,此代码符合您的要求。我删除了打印语句。我看到它在终端中运行时等待,而不是在操场上等待。@squiggy这是突然结束的代码,这是等待10秒的代码我相当确定操场上有沙子盒装环境,因此它会限制执行时间。尝试等待一秒钟。从技术上讲,这是操场的一项“功能”。当所有东西都在操场上被阻塞时,时间会人为地提前,直到事情解除阻塞…或者它决定事情处于僵局。请参阅“假装时间”在游乐场文章中的部分,我无法重现您的问题。就目前情况而言,此代码符合您的要求。我删除了打印语句。我看到它在终端中运行时等待,而不是在游乐场上等待。@squiguy这是突然结束的代码,这是等待10秒的代码我相当确定游乐场nd有一个沙盒环境,所以它会限制执行时间。试着等待一秒钟。从技术上讲,这是操场的一个“功能”。当所有东西都在操场上等待时间被阻塞时,时间会人为地提前,直到事情解除阻塞…或者它决定事情处于僵局。请参阅操场文章中的“假装时间”部分
func main() {
forever := make(chan bool)
go func() {
fmt.Println("why")
time.Sleep(10*time.Second)
forever <- false
}()
fmt.Println(<- forever)
}
package main
import (
"time"
)
func main() {
forever := make(chan bool)
go func() {
time.Sleep(10 * time.Second)
forever <- false
}()
<-forever
}