编辑:我的问题与How to write my own Sleep function using just time.After 不同?它有一个不同的代码变体,由于单独的原因而无法正常工作,我需要解释原因。
我正在尝试在这里解决作业问题:https : //www.golang-book.com/books/intro/10(使用编写您自己的睡眠功能time.After)。
到目前为止,这是我基于该章节中讨论的示例所做的尝试:
package main
import (
"fmt"
"time"
)
func myOwnSleep(duration int) {
for {
select {
case <-time.After(time.Second * time.Duration(duration)):
fmt.Println("slept!")
default:
fmt.Println("Waiting")
}
}
}
func main() {
go myOwnSleep(3)
var input string
fmt.Scanln(&input)
}
http://play.golang.org/p/fb3i9KY3DD
我的想法是,infinitefor将继续执行select语句,default直到time.After函数返回的通道说话。当前代码的问题是,后者不会发生,而default语句被无限调用。
我究竟做错了什么?
POPMUISE
相关分类