我正在尝试在下面的代码段中运行
Traceback (most recent call last):
File "c:/Users/rodri/Desktop/Python/pong/index.py", line 63, in <module>
wn.onkey(paddlebup, 'UP')
File "C:\Users\rodri\AppData\Local\Programs\Python\Python37\lib\turtle.py", line 1394, in onkey
self._onkeyrelease(fun, key)
File "C:\Users\rodri\AppData\Local\Programs\Python\Python37\lib\turtle.py", line 687, in _onkeyrelease
self.cv.bind("<KeyRelease-%s>" % key, eventfun)
File "C:\Users\rodri\AppData\Local\Programs\Python\Python37\lib\turtle.py", line 416, in bind
self._canvas.bind(*args, **kwargs)
File "C:\Users\rodri\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py", line 1251, in bind
return self._bind(('bind', self._w), sequence, func, add)
File "C:\Users\rodri\AppData\Local\Programs\Python\Python37\lib\tkinter\__init__.py", line 1206, in _bind
self.tk.call(what + (sequence, cmd))
_tkinter.TclError: bad event type or keysym "UP"
如预期的那样,它等待6秒钟,打印“完成”,然后退出
但是如果我删除打印语句,
package main
import (
"fmt"
"time"
)
func main() {
time.Sleep(time.Millisecond*6000)
fmt.Println("Done")
}
它不会等待并立即退出。为什么?
因此,请看下面的代码
package main
import (
"time"
)
func main() {
time.Sleep(time.Millisecond*6000)
}
如果没有接收者可以读取package main
import (
"fmt"
"time"
)
func main() {
c := make(chan int)
go count(6, c)
time.Sleep(time.Millisecond*5000)
}
func count(num int, c chan int) {
for i := 1; i <= num; i++ {
fmt.Println(i)
c <- i
time.Sleep(time.Millisecond*2000)
}
close(c)
}
函数,即使有一个{{ 1}}之后的语句。但是当我删除声明
count
i
函数确实会等待那5秒钟,因此main
goroutine一直计数到3。
这是怎么回事?
答案 0 :(得分:3)
在本地运行它,它将等待。 Go Playground上的输出将被缓存。如果没有输出,则不会让您等待6秒。如果有输出,则保留输出的时间。
阅读博客文章:The Go Blog: Inside the Go Playground:
我们捕获每次写入标准输出和标准错误的时间,并将其提供给客户端。然后,客户端可以按正确的时间“回放”写入,以便输出看起来就像程序在本地运行一样。