如何仅使用time.After编写自己的Sleep函数?

airsoftFreak:

我正在尝试编写自己的睡眠函数,相当于在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,如果可能的话,何时使用通道?

icza:

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 inttime.Secondtype time.Duration,并且time.After()需要type的值time.Duration

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何编写自己的max函数

最好的-使用内置函数还是编写自己的函数?

如何在Visual Rules BRM中编写自己的Java函数?

如何编写自己的函数来匹配字符串模式?

在 Python 中使用导入的模块编写自己的函数的最佳实践?

如何仅使用函数编写计算器?

如何编写自己的函数来接受并使用函数作为参数?

如何在函数中正确使用time.sleep()?

在Clojure中,如何编写自己的递归函数以使用惰性列表?

使用dplyr和group_by编写自己的函数-如何继续更改的列名

编写自己的函数时如何使用R的省略号功能?

如何仅使用自己的属性更新对象?

当我在 javascript 中使用自己的 sleep() 函数时,我使用快速排序算法的循环排序函数不起作用

如何在core.logic中编写自己的简单约束函数?

如何在Python中编写自己的异步/等待协程函数?

如何在F#中编写自己的List.map函数

如何暂停Python的time.sleep()函数?

编写自己的函数以在 c# linq 语句中使用

如何仅使用pyspark函数查找日期

如何使用time.After()代替time.Sleep()获得可中断的暂停

如何在JavaScript中仅使用条件语句编写硬币计数器函数?

如何仅通过在F#中使用递归来编写此函数?

编写自己的tidyselect函数

如何编写自己的元类?

如何使用 for 和 if 编写函数

如何检测仅使用cppcheck从未使用的函数调用的函数?

如何(仅!)在Visual Studio中使用自己的生成脚本

Haskell编写自己的函数以编写函数

如何仅使用“ az”,“ AZ”,“。”,“ \ n”和“”编写Ruby程序