给定以下代码:
iv, err := strconv.ParseInt("18446744073709551448", 10, 64)
fmt.Println(iv)
fmt.Printf("%#v\n", err)
fmt.Printf("%v\n", err)
//Output:
9223372036854775807
&strconv.NumError{Func:"ParseInt", Num:"18446744073709551448", Err:(*errors.errorString)(0x1040a040)}
strconv.ParseInt: parsing "18446744073709551448": value out of range
如何检测到函数因超出 int64 范围而失败?strconv.ParseInt函数返回一个错误类型,但在这种情况下,它实际上是一个strconv.NumError类型,如 所示%#v
。错误处理和 Go文章提到您可以使用类型断言来检查特定类型的错误,但它没有给出任何示例。我应该使用什么表达式来完成此代码:
if expression {
uv, err := strconv.ParseUint("18446744073709551448", 10, 64)
}