我正在尝试编写自己的睡眠函数,相当于在Go中time.Sleep
使用time.After
。
这是代码。第一次尝试:
func Sleep(x int) {
msg := make(chan int)
msg := <- time.After(time.Second * x)
}
第二次尝试:
func Sleep(x int) {
time.After(time.Second * x)
}
两者都返回错误,有人可以向我解释如何编写等同于time.Sleep
使用的睡眠函数time.After
,如果可能的话,何时使用通道?
time.After()
返回一个频道。在指定的持续时间之后,将在通道上发送一个值。
因此,只需从返回的通道接收一个值,接收就会阻塞,直到发送该值为止:
func Sleep(x int) {
<-time.After(time.Second * time.Duration(x))
}
您的错误:
在第一个示例中:
msg := <- time.After(time.Second * x)
msg
已经声明,因此不能使用Short变量声明 :=
。接收到的值也将是类型time.Time
,因此您甚至无法将其分配给msg
。
在第二个示例中,您需要一个类型转换,x
它是type int
和time.Second
type time.Duration
,并且time.After()
需要type的值time.Duration
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句