首頁 > 後端開發 > Golang > 為什麼 `time.Sleep(i * time.Millisecond)` 在 Go 中編譯失敗?

為什麼 `time.Sleep(i * time.Millisecond)` 在 Go 中編譯失敗?

DDD
發布: 2024-11-18 21:21:02
原創
854 人瀏覽過

Why Does `time.Sleep(i * time.Millisecond)` Fail to Compile in Go?

time.Millisecond 混亂

在Go 中,當嘗試將time.Sleep() 函數與time.Duration 值一起使用時,它是確保相乘的值具有相同類型至關重要。下面的程式碼對此進行了說明:

// Compiles successfully
time.Sleep(1000 * time.Millisecond)
登入後複製

這裡,1000 是一個無型別常數,在執行乘法之前會自動轉換為 time.Duration。

但是,當使用int 變數改為:

var i = 1000
// Compilation error
time.Sleep(i * time.Millisecond)
登入後複製

程式碼無法使用錯誤:

invalid operation: i * time.Millisecond (mismatched types int and time.Duration)
登入後複製

這是因為變數i 是int 類型,而time. Millisecond 是time.Duration 類型。 Go 要求 * 等二元運算子的運算元必須是同一型,除非運算涉及移位或無型別常數。

要解決這個問題,可以將 int 變數轉換為 time.Duration 之前的乘法:

var i = 1000
time.Sleep(time.Duration(i) * time.Millisecond)
登入後複製

以上是為什麼 `time.Sleep(i * time.Millisecond)` 在 Go 中編譯失敗?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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