ホームページ  >  記事  >  バックエンド開発  >  Go で `time.Sleep(i * time.Millisecond)` がコンパイルに失敗するのはなぜですか?

Go で `time.Sleep(i * time.Millisecond)` がコンパイルに失敗するのはなぜですか?

DDD
DDDオリジナル
2024-11-18 21:21:02775ブラウズ

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

time.ミリ秒混乱

Go では、time.Duration 値を指定して time.Sleep() 関数を使用しようとすると、乗算される値が同じ型であることを確認するために不可欠です。これを以下のコードに示します。

// 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 型であるためです。間隔。 Go では、演算にシフトや型なし定数が含まれる場合を除き、* などの二項演算子のオペランドが同じ型である必要があります。

これを解決するには、乗算の前に int 変数を time.Duration に変換します。

var i = 1000
time.Sleep(time.Duration(i) * time.Millisecond)

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。