当前位置: 首页 > 面试题库 >

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

管弘
2023-03-14
问题内容

我正在尝试编写自己的睡眠函数,相当于在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
inttime.Secondtype
time.Duration,并且time.After()需要type的值time.Duration



 类似资料:
  • 关于rust导入函数的问题,我的工程格式如下: src/main.rs src/api/api.rs api.rs 里有一个函数: pub async fn root() {} 问题是:我该如何在main.rs下调用这个root,我试过各种文档上的方法都不行。求助各位 知道怎么导入

  • 对于简单的定制操作,我们或许可以通过使用layers.core.Lambda层来完成。但对于任何具有可训练权重的定制层,你应该自己来实现。 这里是一个Keras层应该具有的框架结构(1.1.3以后的版本,如果你的版本更旧请升级),要定制自己的层,你需要实现下面三个方法 build(input_shape):这是定义权重的方法,可训练的权应该在这里被加入列表`self.trainable_weigh

  • 对于简单的定制操作,我们或许可以通过使用layers.core.Lambda层来完成。但对于任何具有可训练权重的定制层,你应该自己来实现。 这里是一个Keras2的层应该具有的框架结构(如果你的版本更旧请升级),要定制自己的层,你需要实现下面三个方法 build(input_shape):这是定义权重的方法,可训练的权应该在这里被加入列表`self.trainable_weights中。其他的属性

  • 对于简单、无状态的自定义操作,你也许可以通过 layers.core.Lambda 层来实现。但是对于那些包含了可训练权重的自定义层,你应该自己实现这种层。 这是一个 Keras 2.0 中,Keras 层的骨架(如果你用的是旧的版本,请更新到新版)。你只需要实现三个方法即可: build(input_shape): 这是你定义权重的地方。这个方法必须设 self.built = True,可以通

  • 问题内容: 我正在尝试创建一个要插入到我的文档中的图形,并且我需要不带圆点和帽子的粗体和符号。 我一直在使用的代码在我的文档,但这里使用了封装(或可能的包装,对不起,我不知道我是很新的这两个和)我不能在使用它的标签。 因此,我很想知道如何使用的,以及如何编写一个序言安装即可使用这些符号所需要的包。我希望这是有道理的,而且我知道这可能已经存在或很简单,但是我是新手,所以请不要生气! 感谢大伙们! 编

  • 问题内容: 我需要在cfml页面中使用自己的java类。 文档中的此项听起来不错,但没有说明我必须创建哪些文件。 我试图在网站根目录下创建一个页面。然后将+ 放在同一路径中。但这会导致错误“找不到类”! 你能帮我么? 问题答案: 同一路径中的TestClass.java + TestClass.class。 您不能仅将文件放置在任何地方。CF服务器启动时, 仅 检查类/ jar的特定位置。这些位置