Int64 in Int-Konvertierung in Go: Fehler vermeiden
In Go kann die Konvertierung von int64 in int beim Vergleich der beiden Typen eine Herausforderung sein. In diesem Artikel wird der empfohlene Ansatz für diese Konvertierung erläutert, um unerwartete Ergebnisse zu vermeiden.
Konvertierung in einen größeren Typ
Um die Genauigkeit sicherzustellen, empfiehlt es sich, den kleineren Typ (in) zu konvertieren in diesem Fall int) in den größeren Typ (int64). Dies kann durch Typkonvertierung erreicht werden:
var a int var b int64 int64(a) < b
Bedenken hinsichtlich der Kürzung
Beim Vergleichen von Werten kann die Konvertierung des größeren Typs in den kleineren zu Datenverlust oder Kürzung führen. Betrachten Sie das folgende Beispiel:
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 }
In diesem Szenario führt die Konvertierung von int64(y) in int32 zu -2147483648, wodurch die höherwertigen Bits des Originalwerts verloren gehen.
Optimierte Konvertierung für maxInt
Für maxInt int64-Werte sollten Sie die Verwendung von in Betracht ziehen folgende Konvertierung:
for a := 2; a < int(maxInt); a++ { // Execute correctly even if maxInt exceeds the maximum value of int }
Durch die Konvertierung von maxInt in int und die Verwendung von int(), um sicherzustellen, dass der richtige int-Subtyp verwendet wird, können Überlaufprobleme vermieden und gleichzeitig der gewünschte Vergleich sichergestellt werden.
Fazit
Die Herangehensweise an die Konvertierung von int64 in int unter sorgfältiger Berücksichtigung der Schriftgrößen hilft, Fehler zu vermeiden und genaue Vergleiche sicherzustellen. Durch die Einhaltung des Prinzips der Konvertierung des kleineren Typs in den größeren können Entwickler Datenverluste vermeiden und zuverlässige Ergebnisse erzielen, wenn sie in Go mit unterschiedlichen numerischen Typen arbeiten.
Das obige ist der detaillierte Inhalt vonWie kann man int64 in Go sicher in int konvertieren: Datenverlust und Überlauf vermeiden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!