Go 当您强制转换为较小的整数时会发生什么?

Go 当您强制转换为较小的整数时会发生什么?,go,Go,假设您有一个int64值。如果将该值强制转换为int32,会发生什么情况。它如何影响值的符号?它是否等同于使用模运算符?您指的是转换,而不是强制转换。报告的相关部分说: 在整数类型之间转换时,如果值是有符号整数,则将其符号扩展为隐式无限精度;否则它是零扩展的。然后截断它以适应结果类型的大小。例如,如果v:=uint16(0x10F0),则uint32(int8(v))==0xfffff0。转换总是产生一个有效值;没有溢出的迹象 从int64到int32的转换将截断。截断可能会影响值的符号 从in

假设您有一个
int64
值。如果将该值强制转换为
int32
,会发生什么情况。它如何影响值的符号?它是否等同于使用模运算符?

您指的是转换,而不是强制转换。报告的相关部分说:

在整数类型之间转换时,如果值是有符号整数,则将其符号扩展为隐式无限精度;否则它是零扩展的。然后截断它以适应结果类型的大小。例如,如果v:=uint16(0x10F0),则uint32(int8(v))==0xfffff0。转换总是产生一个有效值;没有溢出的迹象

int64
int32
的转换将截断。截断可能会影响值的符号


int32
int64
的转换由于隐式符号扩展而保留符号。

当您尝试使用不同的数字时发生了什么?Go根本不允许您施放。但是如果你转换,你可能会溢出。这都在语言规范中解释过了,语言规范非常简洁易懂。查一查。