Go で Int64 を Int に変換する: ガイド
型変換はプログラミングにおける一般的なタスクであり、Go では変換が簡単です。 2 つの整数型の間。 int と int64 の違いを理解することは、正確かつ効率的な変換にとって重要です。
課題
int64 (64 ビット整数) と int (32- ビット整数) を使用する場合ビット整数) Go では、開発者はこれら 2 つの型の値を比較する必要が生じる場合があります。ただし、直接比較すると、オーバーフローやアンダーフローにより予期しない結果が生じる可能性があるため、int64 から int への変換は難しい場合があります。
たとえば、よくある間違いは、次の図に示すように、int64 値を int に直接変換することです。提供されたコード スニペット:
for a := 2; a < maxInt; a++ { if isPrime(a) { if base.N % a == 0 { base.Result = a } } }
ここで、maxInt は int64 値であり、ループ条件 (< maxInt) はint32 (a) と int64 を比較します。これにより、不正確な結果が生じる可能性があります。
解決策
Go で int64 値を int と正確に比較するには、int 型を int64 に変換するのが正しい方法です。これにより、両方の値が同じ型であることが保証され、オーバーフローまたはアンダーフローのリスクが排除されます。
for a := 2; a < int64(maxInt); a++ { if isPrime(a) { if base.N % a == 0 { base.Result = a } } }
a を int64 にキャストすることで、ループ条件は int64 値を別の int64 値と正しく比較し、適切な比較を保証します。 .
補足
この型変換を行う際には、オーバーフローまたはアンダーフローの可能性を考慮することが重要です。変換された値がターゲットの型に対して大きすぎる場合、オーバーフローが発生し、不正な値が得られる可能性があります。逆に、変換された値が小さすぎる場合、アンダーフローが発生し、値が下限に切り捨てられる可能性があります。
以上がGo で Int64 を Int に安全に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。