web-dev-qa-db-fra.com

Casting entre les types de nombres dans Golang

Quelqu'un pourrait-il me dire si go prend en charge la conversion automatique de types numériques. À l'heure actuelle, je dois convertir manuellement les résultats de tous mes calculs en int ou int64 et garder une trace du type numérique que j'utilise.

19
cobie

Go ne convertira pas automatiquement les types numériques pour vous.

De la spécification de langue:

Des conversions sont requises lorsque différents types numériques sont mélangés dans une expression ou une affectation. Par exemple, int32 et int ne sont pas du même type même s'ils peuvent avoir la même taille sur une architecture particulière.

13
dskinner

Go ne prend pas en charge les conversions de type implicites en type numérique.

Voir spec . Je pense que c'est pour des raisons de sécurité et de prévisibilité. Une autre chose que j'ai trouvée était un peu bizarre/intéressant, c'est que vous ne pouvez même pas convertir de int en int32 implicitement, ce qui est étrange car les deux sont de la même taille.

type conversionerror

4
gprasant

Vous devez convertir manuellement entre les types, par ex.

var b byte = byte(x % 256);
0
jameshfisher