Go 中睡眠持续时间的分数
问题:
为什么以下 Go 会出现以下情况代码成功休眠一小部分持续时间,而第二个代码失败?
// Success s := time.Hour / 73.0 fmt.Println("sleeping: ", s) time.Sleep(s) // Failure d := 73.0 s := time.Hour / d fmt.Println("sleeping: ", s) time.Sleep(s) // Error: invalid operation: time.Hour / d (mismatched types time.Duration and float64)
答案:
区别在于每行除数的类型:
第二行工作,您必须将 d 转换为时间。持续时间:
s := time.Hour / time.Duration(d)
或使用一个以下替代方法之一:
对于不能的值以time.Duration表示,如73.5,time.Hour必须转换为float64:
d := 73.5 s := time.Duration(float64(time.Hour) / d)
进一步注意事项:
以上是为什么 Go 的 time.Sleep() 会根据常量类型以不同方式处理小数持续时间?的详细内容。更多信息请关注PHP中文网其他相关文章!