如何使用just time.After编写自己的睡眠函数?

如何使用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函数吗?之后,如果可能,我什么时候使用频道?返回频道。在指定的持续时间后,将在通道上发送一个值

我正在尝试使用Go中的
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有太多问题。我不明白@airsoftfrake
time的这部分内容。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)