Beim Schreiben von Code müssen wir häufig Datentypen konvertieren. Diese Konvertierungen erfolgen normalerweise zwischen verschiedenen Datentypen, z. B. der Konvertierung einer Zeichenfolge in eine Ganzzahl oder Gleitkommazahl oder der Konvertierung einer Ganzzahl in eine Zeichenfolge usw. In Golang ist die Ganzzahlkonvertierung besonders wichtig. In diesem Artikel werden die Durchführung der Ganzzahlkonvertierung in Golang und die damit verbundenen Vorsichtsmaßnahmen vorgestellt.
Golang unterstützt die Konvertierung von Ganzzahltypen unterschiedlicher Größe ineinander und voneinander. Sie können beispielsweise uint8 in int8 und int64 in uint8 konvertieren. Allerdings ist zu beachten, dass eine Typkonvertierung nur dann durchgeführt werden kann, wenn der Darstellungsbereich des Zieltyps den Wertebereich des konvertierten Werts vollständig umfassen kann.
Wenn Sie beispielsweise den Maximalwert von int16 (32767) in int8 konvertieren, führt dies zu einem Datenüberlauf und das Ergebnis kann negativ werden. Wenn Sie ebenfalls ein numerisches Gleitkommaliteral von 123,45 (das als Typ float64 interpretiert wird) in ein uint16 konvertieren, verlieren Sie den Bruchteil und erhalten einen abgeschnittenen ganzzahligen Wert.
Hier sind einige Beispiele, die zeigen, wie man eine Ganzzahlkonvertierung in Golang durchführt:
package main import ( "fmt" "math" ) func main() { // 将int转换为float a := 10 b := float64(a) fmt.Printf("a=%d, b=%f\n", a, b) // 将float转换为int c := 3.14159 d := int(c) fmt.Printf("c=%f, d=%d\n", c, d) // 将uint64转换为int32 const maxUint64 = math.MaxUint64 var e uint64 = maxUint64 f := int32(e) fmt.Printf("e=%d, f=%d\n", e, f) // 将int8转换为uint8 var g int8 = -12 h := uint8(g) fmt.Printf("g=%d, h=%d\n", g, h) }
Im obigen Beispiel konvertieren wir die Variable a vom Typ int in float64 und die Variable c vom Typ float64 in den Typ int bzw. konvertieren die Variable e vom Typ uint64 in int32 und konvertieren Sie die Variable g vom Typ int8 in uint8. Wir haben jeweils den Anfangswert und das umgerechnete Ergebnis ausgedruckt. Beachten Sie, dass der Bereich vorzeichenloser Ganzzahltypen (z. B. uint8, uint16 usw.) sorgfältig geprüft werden sollte, bevor sie in vorzeichenbehaftete Typen konvertiert werden. Wenn der ursprüngliche Wert den Bereich der positiven Darstellung des Zieltyps überschreitet, ist das Ergebnis negativ.
Neben expliziten Konvertierungen bietet Golang auch einige implizite Ganzzahlkonvertierungen. In einigen Fällen kann die Durchführung impliziter Konvertierungen Ihren Code sauberer machen, in anderen Fällen müssen Sie jedoch vorsichtig sein.
Wenn Sie beispielsweise eine Variable vom Typ einer vorzeichenbehafteten Ganzzahl (z. B. int8) mit einer Zahl vom Typ einer vorzeichenlosen Ganzzahl (z. B. uint8) für Addition, Subtraktion, Multiplikation oder eine Linksverschiebungsoperation verwenden, wird letztere in das gleiche Vorzeichen konvertiert Variable als erster Symboltyp. Diese Transformation kann den Code besser lesbar machen und außerdem Überläufe verhindern. Bei Verwendung eines anderen Operators muss die Konvertierungsanweisung jedoch explizit erteilt werden.
In Golang gibt es einige „implizite Regeln“ für die Ganzzahlkonvertierung. Wenn Sie beispielsweise Operatoren verwenden, um zwei ganzzahlige Typen unterschiedlicher Größe zu addieren oder zu subtrahieren, konvertiert Golang diese automatisch in denselben Typ und fügt bei Bedarf eine Vorzeichenerweiterung hinzu. Wenn Sie jedoch einen Integer-Typ einer Variablen eines anderen Typs zuweisen (z. B. einem String- oder Schnittstellentyp), muss dieser explizit in den erforderlichen Typ konvertiert werden.
Zusammenfassung:
Das obige ist der detaillierte Inhalt vonSo führen Sie eine Ganzzahlkonvertierung in Golang durch. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!