我正在寻找类似这样的整数转换函数:
func narrow(x int64) (int32, error) { ... }
Run Code Online (Sandbox Code Playgroud)
在这个例子中,该函数将返回((int32)(x), nil)如果x配合到int32,并且(nil, someError)如果它不.
似乎语言中内置了很多转换,但它们都默默地吞噬溢出,而不是提供一个确定的错误.我错过了什么吗?
转换不会报告溢出.
这是一个处理正数和负数的函数:
func narrow(x int64) (int32, error) {
y := int32(x)
if int64(y) != x {
return 0, errors.New("overflow")
}
return y, nil
}
Run Code Online (Sandbox Code Playgroud)