我正在尝试编写自己的 sleep 函数,相当于在 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,如果可能,我何时使用通道?
1 回答
白衣非少年
TA贡献1155条经验 获得超0个赞
time.After()返回一个频道。并且在指定的持续时间之后将在通道上发送一个值。
所以只需从返回的通道接收一个值,接收将阻塞,直到该值被发送:
func Sleep(x int) {
<-time.After(time.Second * time.Duration(x))
}
你的错误:
在你的第一个例子中:
msg := <- time.After(time.Second * x)
msg已声明,因此不能使用Short 变量声明 :=。此外,收到的值的类型为time.Time,因此您甚至无法将其分配给msg.
在你的第二个例子中,你需要一个类型转换as xis of typeint和time.Secondis of type time.Duration,并且time.After()需要一个 type 的值time.Duration。
- 1 回答
- 0 关注
- 157 浏览
添加回答
举报
0/150
提交
取消