如何从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
}