如何从Go中溢出int转换中获得错误?

时间:2016-09-20 20:15:21

标签: go int

我正在寻找类似于此的整数转换函数:

func narrow(x int64) (int32, error) { ... }

在此示例中,如果((int32)(x), nil)适合x,则函数将返回int32,如果不(nil, someError),则返回@Html.DropDownList("SelectedRole", ViewBag.RolesEdit as List<SelectListItem>, ViewBag.CurrentUserRole as string, new { @class = "form-control" })

这种语言似乎内置了很多conversions,但它们都默默地吞噬溢出,而不是提供一个确定的错误。我错过了什么吗?

1 个答案:

答案 0 :(得分:5)

转化不会报告溢出。

这是一个处理正数和负数的函数:

func narrow(x int64) (int32, error) {
   y := int32(x)
   if int64(y) != x {
      return 0, errors.New("overflow")
   }
   return y, nil
}

playground example