首頁 > 後端開發 > Golang > 在 Go 中如何精確地休眠小數時間持續時間?

在 Go 中如何精確地休眠小數時間持續時間?

Susan Sarandon
發布: 2024-12-05 07:53:13
原創
290 人瀏覽過

How Can I Precisely Sleep for Fractional Time Durations in Go?

以分數持續時間睡眠

在 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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板