以分數持續時間睡眠
在 Go 中,可以以分數持續時間睡眠,從而可以精確控制睡眠時長。但是,使用分數時必須考慮某些限制。
使用無型常數
考慮以下程式碼:
s := time.Hour/73.0 time.Sleep(s)
此程式碼成功運作並休眠所需的分數持續時間。無類型數值常數可以採用不同的類型,這取決於使用它們的上下文。在這種情況下,73.0 成為 time.Duration,因為右側表達式需要它。
因為類型不符而失敗
但是,以下程式碼失敗並顯示類型不符錯誤:
d := 73.0 s := time.Hour/d time.Sleep(s)
此失敗的原因是d 是float64 預設。嘗試將 time.Hour 除以 d 時,類型不符。
分數的明確轉換
為了使後面的程式碼正常運作,需要明確轉換為時間.Duration 是必需的:
d := 73.0 s := time.Hour / time.Duration(d) time.Sleep(s)
或者,您也可以使用正確的值來聲明d類型:
d := time.Duration(73.0) s := time.Hour / d time.Sleep(s)
非整數分數的注意事項
如果持續時間的小數部分不能表示為int64,就像分數較大的情況一樣大於2^53,您需要將time.Hour 轉換為float64,執行除法,然後將結果轉換回時間.持續時間:
d := 73.5 s := time.Duration(float64(time.Hour) / d) time.Sleep(s)
以上是在 Go 中如何精確地休眠小數時間持續時間?的詳細內容。更多資訊請關注PHP中文網其他相關文章!