2012-12-13 6 views
16

Könnte mir bitte jemand sagen, wenn Go unterstützt automatische Umwandlung von numerischen Typen. Im Moment muss ich die Ergebnisse meiner Berechnungen in int oder int64 umwandeln und verfolgen, welchen numerischen Typ ich verwende.Casting zwischen Zahlentypen in Golang

+1

Sie könnten wollen, betrachten [diese Frage und es ist Antworten] (http://stackoverflow.com/questions/13367979/idiomatic-type-conversion-in-go/13368417). – nemo

Antwort

13

Go konvertiert numerische Typen nicht automatisch für Sie.

Von der Sprachspezifikation:

Konvertierungen erforderlich sind, wenn verschiedene numerische Typen in ein Ausdruck oder Zuordnung gemischt werden. Zum Beispiel sind int32 und int nicht vom gleichen Typ, obwohl sie die gleiche Größe auf einer bestimmten Architektur haben können.

4

Go unterstützt keine impliziten Typkonvertierungen im numerischen Typ.

Siehe spec. Ich denke, dies ist aus Gründen der Sicherheit und Vorhersehbarkeit. Eine weitere Sache, die ich fand, war ein bisschen seltsam/interessant ist, dass Sie implizit sogar von int zu int32 konvertieren können, was komisch ist, weil beide von der gleichen Größe sind.

type conversion error

+4

'int' wird ganz sicher nicht als' int32' angegeben. Es variiert je nach Implementierung und Plattform. – Dustin

+0

Also, wie machst du es explizit? –

+19

Mit den Worten y = int32 (x) – gprasant

0

Sie müssen manuell zwischen den Typen konvertieren, z.B.