Go での Int64 から Int への変換: エラーの防止
Go では、2 つの型を比較するときに、int64 から int への変換が困難になることがあります。この記事では、予期しない結果を防ぐためのこの変換の推奨アプローチについて説明します。
より大きな型への変換
精度を確保するには、より小さな型を変換することをお勧めします (この場合、int) をより大きな型 (int64) に変換します。これは、型変換を使用して実現できます。
var a int var b int64 int64(a) < b
切り捨ての問題
値を比較する場合、大きい型を小さい型に変換すると、データの損失または切り捨てが発生する可能性があります。次の例を考えてみましょう。
var x int32 = 0 var y int64 = math.MaxInt32 + 1 // y == 2147483648 if x < int32(y) { // This evaluates to false because int32(y) is -2147483648 }
このシナリオでは、int64(y) を int32 に変換すると -2147483648 となり、元の値の上位ビットが失われます。
最適化された変換maxInt
maxInt int64 値の場合は、次の変換の使用を検討してください。
for a := 2; a < int(maxInt); a++ { // Execute correctly even if maxInt exceeds the maximum value of int }
maxInt を int に変換し、int() を使用して、正しい int サブタイプが確実に得られるようにします。
結論
型のサイズを慎重に考慮して int64 から int への変換を行うと、エラーが防止され、正確な比較が保証されます。 。小さい型を大きい型に変換するという原則に従うことで、開発者は Go でさまざまな数値型を扱うときにデータ損失を回避し、信頼性の高い結果を得ることができます。
以上がGo で int64 を int に安全に変換する方法: データ損失とオーバーフローを回避するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。