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

按时间分数进行睡眠

姜智渊
2023-03-14
问题内容

有人可以告诉我这为什么起作用:

s := time.Hour/73.0
fmt.Println("sleeping: ", s)
time.Sleep(s)

但这失败了:

d := 73.0
s := time.Hour/d
fmt.Println("sleeping: ", s)
time.Sleep(s)

这是错误:

invalid operation: time.Hour / d (mismatched types time.Duration and float64)

问题答案:

这行:

s := time.Hour/73.0

是一个简短的变量声明,右侧表达式为:time.Hour / 73.0time.Hourtime包中的类型常量,其类型为time.Duration;并且73.0是一种
无类型数值常量
,其在表达时,将可能的话采取适当的类型。由于time.Duration具有int64作为其基础类型,因此73.0可以在time.Duration不损失精度的情况下将常量转换为常量,从而time.Hour / time.Duration(73.0)可以执行常量表达式。

另一行:

d := 73.0
s := time.Hour/d

第一行是一个简短的变量声明,其中的类型d将从右边的表达式中推断出来,这是一个无类型的数字常量(确切地说是带浮点字面量)。由于需要一种类型,因此将使用其默认类型float64。因此d将是type的变量float64

下一行的简短变量声明:time.Hour / d,这time.Hour也是type的值time.Duration,但是您尝试将其除以type的值float64,这在Go中是不允许的。

要使其工作,您必须显式转换dtime.Duration

s := time.Hour / time.Duration(d)

d必须为类型time.Duration

d := time.Duration(73.0)
s := time.Hour / d

要么:

var d time.Duration = 73.0
s := time.Hour / d

time.Duration例如,如果值不能用表示,则这些将不起作用73.5(因为time.Duration具有int64基础类型)。在这种情况下,您必须转换time.Hourfloat64执行除法并将结果转换为time.Duration,例如:

d := 73.5
s := time.Duration(float64(time.Hour) / d)

阅读有关该主题的更多详细信息:

规格:常数

围棋博客:常量



 类似资料:
  • 我正在调用while循环内的线程Hibernate1秒。当标志为true时,循环将运行(标志为true无限时间)。在循环内,线程应Hibernate1秒,唤醒并增加计数器,检查IF条件,如果为FALSE,则应再次Hibernate1秒并继续29次。在第30次迭代中,IF条件为true,IF语句中调用的方法将收集并存储数据。最后,在第32次迭代中,第二个IF语句将把存储的数据发送到服务器,并将计数设

  • 问题内容: 关于PHP中的函数,我有两个问题: 睡眠时间是否会影响我的PHP脚本的最大执行时间限制?有时,PHP显示消息“超过30秒的最大执行时间”。如果我使用此消息会出现吗? 使用该功能有没有风险?它会消耗很多CPU性能吗? 问题答案: 您应该尝试一下,只需让脚本hibernate超过您的最大执行时间即可。 Spoiler:在Linux下,睡眠时间被忽略,但是在Windows下,它计为执行时间。

  • 问题内容: 我有一个这样的dataFrame,我想每60分钟进行一次分组,然后从06:30开始分组。 我在用: 我得到这个分组: 但我正在寻找这个结果: 我如何告诉该功能以6小时30分开始以一小时为间隔进行分组? 如果 .groupby(pd.TimeGrouper(freq =‘60Min’)) 无法完成此 操作 ,最好的方法是怎么做? 致敬并非常感谢 问题答案: 使用会同中的参数。 指定将使时

  • 问题内容: 我将应用程序发布的想法存储在Firestore中。数据像这个 Ideas / {documentID} / IdeaObject 一样存储在Firestore中。问题是,当我检索数据时,它没有按发布时间排序。检索到的构想根据其文档ID的ID来确定,该ID由Firestore自动创建。我在模型类中使用了 ServerTimestamp ,并且在检索它时,我在Firestore引用中使用了

  • 问题内容: 我是Postgres的新用户,我敢肯定已经有了答案,但是我找不到。 我需要分析活动日志表中的一些数据,并将结果按时间段分组。 一个简单的问题版本是一个包含三个字段的表: 我要捕获的操作字符串可能是“ create_entry”(是的,我知道这很不错,因为它的数据库设计不错,但我坚持使用它) 我正在寻找的输出是一个报告,该报告按年份和月份显示了“ create_entry”操作的计数。就

  • 问题内容: 我需要将表分组为15分钟间隔。我可以这样做: 但是要在图表中显示返回的数据,我还需要插入没有任何数据且当前未出现在我的select语句中的间隔。我该如何插入这些? 问题答案: 用15分钟的增量创建一个带有所有可能时间戳的表,然后从该表向上面的查询进行LEFT JOIN。 如果您知道图表始终涵盖24小时,则只需创建一个数字为0-95的表格,然后为每个条目将其添加到图表的开始时间。