如何使用just time.After编写自己的睡眠函数?
我正在尝试使用Go中的如何使用just time.After编写自己的睡眠函数?,time,go,sleep,channel,Time,Go,Sleep,Channel,我正在尝试使用Go中的time.After编写自己的睡眠函数,相当于time.sleep 这是密码。第一次尝试: func Sleep(x int) { msg := make(chan int) msg := <- time.After(time.Second * x) } 这两个都返回错误,有人能给我解释一下如何使用time.sleep编写一个相当于time.sleep的sleep函数吗?之后,如果可能,我什么时候使用频道?返回频道。在指定的持续时间后,将在通道上发送一个值
time.After
编写自己的睡眠函数,相当于time.sleep
这是密码。第一次尝试:
func Sleep(x int) {
msg := make(chan int)
msg := <- time.After(time.Second * x)
}
这两个都返回错误,有人能给我解释一下如何使用time.sleep
编写一个相当于time.sleep的sleep函数吗?
之后,如果可能,我什么时候使用频道?返回频道。在指定的持续时间后,将在通道上发送一个值
因此,只需从返回的通道接收一个值,接收将阻塞,直到发送该值:
func Sleep(x int) {
<-time.After(time.Second * time.Duration(x))
}
func睡眠(x int){
看一看并非常感谢你,icza,你再次保护了我。我对golang有太多问题。我不明白@airsoftfraketime的这部分内容。After()
返回一个频道。有人能解释一下如何使用上面的Sleep(x int)函数吗?进入睡眠(10)
之后立即执行print语句,因此我知道这对我不起作用。@Shawn 3年后,你的答案是:P-因为你在Sleep
前面使用了go
,所以它在goroutine中执行Sleep(在后台)然后直接执行打印。如果删除go
,它应该可以正常工作。
func Sleep(x int) {
<-time.After(time.Second * time.Duration(x))
}
msg := <- time.After(time.Second * x)