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