Mit der Popularität von Golang beginnen immer mehr Entwickler, die Programmiersprache Golang zu erlernen und zu verwenden. Die Konvertierung numerischer Typen ist in Golang ein häufiges Problem. In diesem Artikel wird erläutert, wie numerische Typen in Golang konvertiert werden.
Teil Eins: Numerische Typen in Golang
In Golang gibt es verschiedene Arten von numerischen Typen wie folgt:
#🎜🎜 #int# 🎜🎜#- int8
- int16
- int32
- int64
- uint#🎜 🎜 ##🎜 🎜#uint8
- uint16
- uint32
- uint64
- float32
# 🎜 🎜# float64#🎜 🎜#- complex64
- complex128
- Alle Typen außer int und uint haben eine bestimmte Anzahl von Ziffern. Beispielsweise stellt int8 eine 8-Bit-Ganzzahl dar und int16 eine 16-Bit-Ganzzahl. Diese Typen haben unterschiedliche Gültigkeitsbereiche. Daher muss bei Konvertierungen darauf geachtet werden, den richtigen Bereich beizubehalten, da es andernfalls zu Überläufen oder undefiniertem Verhalten kommen kann.
- Teil 2: Numerische Typkonvertierung
- In Golang kann die numerische Typkonvertierung mithilfe von Typkonvertierungsoperatoren durchgeführt werden. Der Typkonvertierungsoperator wird als T(x) dargestellt, wobei T der Typ ist, in den konvertiert werden soll, und x der Wert ist, der konvertiert werden soll. Um beispielsweise eine Variable vom Typ float64 in eine Variable vom Typ int zu konvertieren, können Sie den folgenden Code verwenden:
f := 3.14159
i := int(f)
Nach dem Login kopieren
Die numerische Typkonvertierung in Golang kann in zwei Typen unterteilt werden:
# 🎜🎜##🎜 🎜#verlustbehaftete Konvertierung
Verlustbehaftete Konvertierung bezieht sich auf die Konvertierung eines größeren numerischen Typs in einen kleineren numerischen Typ. Diese Konvertierung kann zu Präzisionsverlust, Kürzung und Überlauf führen. Wenn beispielsweise beim Konvertieren einer Variablen vom Typ int in eine Variable vom Typ int8 der ursprüngliche Wert den Bereich von int8 überschreitet, kommt es zu einem Überlauf.
Das Folgende ist ein Beispiel:
i := 1000
i8 := int8(i) // 结果为-24
Nach dem Login kopieren
In diesem Beispiel wird die Variable i vom Typ int in die Variable i8 vom Typ int8 konvertiert. Da der Bereich von int8 nur -128 bis 127 beträgt, überschreitet der Wert von i den Bereich von int8, was zu einem Überlauf führt. Der Wert für i8 beträgt also -24 statt ursprünglich 1000.
Verlustfreie Konvertierung
Verlustfreie Konvertierung bezieht sich auf die Konvertierung eines kleineren numerischen Typs in einen größeren numerischen Typ. Diese Konvertierung führt nicht zu einem Genauigkeitsverlust oder einer Kürzung. Wenn Sie beispielsweise eine Variable vom Typ uint8 in eine Variable vom Typ uint16 konvertieren, kommt es weder zu Genauigkeitsverlust noch zu Kürzungen.
Das Folgende ist ein Beispiel:
u8 := uint8(255)
u16 := uint16(u8) // 结果为255
Nach dem Login kopieren
In diesem Beispiel wird die Variable u8 vom Typ uint8 in eine Variable vom Typ uint16 u16 konvertiert. Da uint16 einen größeren Bereich als uint8 hat, erfolgt die Konvertierung verlustfrei und es geht keine Präzision verloren. - Teil 3: Vorsichtsmaßnahmen für die numerische Typkonvertierung
Obwohl die numerische Typkonvertierung in Golang sehr einfach ist, gibt es einige Dinge, auf die Sie bei der Konvertierung achten müssen.
Es kann zu einem Überlauf kommen.
Durch die Konvertierung eines größeren numerischen Typs in einen kleineren numerischen Typ kann ein Überlauf auftreten. Wenn beispielsweise eine Variable vom Typ int in eine Variable vom Typ int8 konvertiert wird und der ursprüngliche Wert den Bereich von int8 überschreitet, kommt es zu einem Überlauf.
Möglicher Präzisionsverlust
- Möglicher Präzisionsverlust durch Konvertierung einer größeren Gleitkommazahl in eine kleinere Gleitkommazahl. Wenn Sie beispielsweise eine Variable vom Typ float64 in eine Variable vom Typ float32 konvertieren, geht möglicherweise die Genauigkeit verloren.
Derselbe numerische Typ muss auch explizit konvertiert werden.
- Obwohl die beiden numerischen Typen die gleiche Anzahl von Ziffern haben, müssen sie dies dennoch tun in der Golang-Formelkonvertierung explizit konvertiert werden. Wenn Sie beispielsweise eine Variable vom Typ int in eine Variable vom Typ int32 konvertieren, müssen Sie einen expliziten Konvertierungsoperator verwenden.
Verschiedene numerische Typen können nicht direkt verglichen werden.
- Verschiedene numerische Typen können nicht direkt verglichen werden. Daher müssen Sie vor dem Vergleich zweier numerischer Variablen eine Konvertierung durchführen sie dem gleichen Typ zuordnen.
Fazit
In Golang ist die numerische Typkonvertierung eine übliche Operation. Mithilfe von Typkonvertierungsoperatoren können Sie zwischen verschiedenen numerischen Typen konvertieren. Beachten Sie bei der Durchführung numerischer Typkonvertierungen, dass verlustbehaftete Konvertierungen zu Präzisionsverlust, Kürzung und Überlauf führen können. Darüber hinaus können numerische Variablen unterschiedlichen Typs nicht direkt verglichen werden, sodass sie in den gleichen Typ konvertiert werden müssen. -
Das obige ist der detaillierte Inhalt vonKonvertierung numerischer Golang-Typen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!