首頁  >  文章  >  後端開發  >  為什麼我不能在 Go 中將 `time.Millisecond` 乘以 `int` ?

為什麼我不能在 Go 中將 `time.Millisecond` 乘以 `int` ?

DDD
DDD原創
2024-11-12 08:57:02549瀏覽

Why Can't I Multiply `time.Millisecond` by an `int` in Go?

與time.Millisecond * int 的混淆

在Go 中,運算子需要相同類型的運算元,除非運算涉及移位或無類型常數。否則,如果一個操作數是無類型常數(例如整數文字),它將轉換為另一個操作數的類型。

考慮以下範例:

// Works because 1000 is an untyped constant and is converted to `time.Duration`.
time.Sleep(1000 * time.Millisecond)

但是,以下程式碼失敗:

// Fails because `v` is an `int` and `time.Duration` are different types.
var v = 1000
time.Sleep(v * time.Millisecond)

要解決此問題,請將int 變數v 轉換為time.Duration,然後再在Sleep函數中使用它:

time.Sleep(time.Duration(v) * time.Millisecond)

此轉換使操作數類型相同,允許操作成功。

以上是為什麼我不能在 Go 中將 `time.Millisecond` 乘以 `int` ?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn