【发布时间】:2012-12-13 00:55:40
【问题描述】:
有人可以告诉我 go 是否支持数字类型的自动转换。现在我必须手动将所有计算的结果转换为 int 或 int64 并跟踪我正在使用的数字类型。
【问题讨论】:
有人可以告诉我 go 是否支持数字类型的自动转换。现在我必须手动将所有计算的结果转换为 int 或 int64 并跟踪我正在使用的数字类型。
【问题讨论】:
Go 不会自动为你转换数字类型。
来自语言规范:
当不同的数字类型混入时需要转换 表达式或赋值。例如, int32 和 int 不是 相同的类型,即使它们在特定的尺寸上可能具有相同的尺寸 架构。
【讨论】:
Go 不支持数字类型的隐式类型转换。
请参阅spec。我认为这是出于安全性和可预测性的原因。我发现的另一件事有点奇怪/有趣的是,您甚至不能隐式地从 int 转换为 int32,这很奇怪,因为两者的大小相同。
【讨论】:
int 肯定不会指定为int32。它因实现和平台而异。
int 和int32 不一定是同一类型:golang.org/ref/spec#Numeric_types
您必须手动在类型之间进行转换,例如
var b byte = byte(x % 256);
【讨论】: