Go 如果没有更多的语句要执行,为什么time.Sleep不起作用?

Go 如果没有更多的语句要执行,为什么time.Sleep不起作用?,go,time,goroutine,channels,go-playground,Go,Time,Goroutine,Channels,Go Playground,我正在尝试运行下面的代码 主程序包 进口( “fmt” “时间” ) func main(){ 时间。睡眠(时间。毫秒*6000) fmt.Println(“完成”) } 正如预期的那样,它等待6秒钟,打印“完成”,然后退出 但如果我删除打印声明 主程序包 进口( “时间” ) func main(){ 时间。睡眠(时间。毫秒*6000) } 它不会等待并立即退出。为什么? 因此,请看下面的代码 主程序包 进口( “fmt” “时间” ) func main(){ c:=制造(成交量) 开始

我正在尝试运行下面的代码

主程序包
进口(
“fmt”
“时间”
)
func main(){
时间。睡眠(时间。毫秒*6000)
fmt.Println(“完成”)
}
正如预期的那样,它等待6秒钟,打印“完成”,然后退出

但如果我删除打印声明

主程序包
进口(
“时间”
)
func main(){
时间。睡眠(时间。毫秒*6000)
}
它不会等待并立即退出。为什么?

因此,请看下面的代码

主程序包
进口(
“fmt”
“时间”
)
func main(){
c:=制造(成交量)
开始计数(6,c)
时间。睡眠(时间。毫秒*5000)
}
func计数(num int,c chan int){

对于i:=1;i在本地运行它,它将等待。Go游乐场上的输出将被缓存。如果没有输出,它不会让您无缘无故地等待6秒。如果有输出,则保留输出的计时

阅读博客帖子:

我们捕获每次写入标准输出和标准错误的时间,并将其提供给客户机。然后客户机可以使用正确的时间“回放”写入,这样输出就好像程序在本地运行一样


@Flimzy我在go游乐场测试它。但正如icza指出的,游乐场上的结果是缓存的,因此实际行为是隐藏的。当我现在在本地尝试时,它工作得很好