如何从Go中溢出的整数转换中获取错误?
我正在寻找类似以下内容的整数转换函数:如何从Go中溢出的整数转换中获取错误?,go,int,Go,Int,我正在寻找类似以下内容的整数转换函数: func narrow(x int64) (int32, error) { ... } 在本例中,如果x适合int32,函数将返回((int32)(x),nil),如果不适合int32,函数将返回(nil,someError) 语言中似乎有很多内置错误,但它们都默默地吞下溢出,而不是提供一个具体化的错误。我遗漏了什么吗?转换不会报告溢出 下面是一个处理正数和负数的函数: func narrow(x int64) (int32, error) { y
func narrow(x int64) (int32, error) { ... }
在本例中,如果x
适合int32
,函数将返回((int32)(x),nil)
,如果不适合int32
,函数将返回(nil,someError)
语言中似乎有很多内置错误,但它们都默默地吞下溢出,而不是提供一个具体化的错误。我遗漏了什么吗?转换不会报告溢出 下面是一个处理正数和负数的函数:
func narrow(x int64) (int32, error) {
y := int32(x)
if int64(y) != x {
return 0, errors.New("overflow")
}
return y, nil
}
转换不会报告溢出 下面是一个处理正数和负数的函数:
func narrow(x int64) (int32, error) {
y := int32(x)
if int64(y) != x {
return 0, errors.New("overflow")
}
return y, nil
}