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