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 サイトの他の関連記事を参照してください。