Go で `time.Sleep(i * time.Millisecond)` がコンパイルされないのはなぜですか?

Barbara Streisand
リリース: 2024-11-10 05:16:02
オリジナル
291 人が閲覧しました

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

time.Millisecond * int Confusion

Go では、乗算演算子には同じ型のオペランド、または型なし定数と非定数オペランドが必要です。

time.Sleep(1000 * time.Millisecond) // works - 1000 is an untyped constant
ログイン後にコピー

この例では、time.ミリ秒の型は time.Duration であり、 1000 は型なしの整定数です。乗算演算子は、1000 を time.ミリ秒の型と一致する time.Duration に変換します。

ただし、次のコードはコンパイルできません:

var i = 1000
time.Sleep(i * time.Millisecond) // invalid operation: i * time.Millisecond (mismatched types int and time.Duration)
ログイン後にコピー

この場合、両方のオペランドはint 型であり、time.Duration と同一ではありません。この問題を解決するには、乗算で使用する前に i を time.Duration に変換します:

var i = 1000
time.Sleep(time.Duration(i) * time.Millisecond)
ログイン後にコピー

以上がGo で `time.Sleep(i * time.Millisecond)` がコンパイルされないのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート