相关疑难解决方法(0)

使用Golang中的类型断言检测超出范围错误的值

给出以下代码:

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
Run Code Online (Sandbox Code Playgroud)

如何检测由于超出int64的范围而导致函数失败?所述strconv.ParseInt函数返回一个错误类型,但在这种情况下,它实际上是一个strconv.NumError由所指示的类型%#v.该错误处理和围棋的文章中提到,您可以使用类型断言来检查特定类型的错误,但它不会给任何实例.我应该使用什么表达式来完成此代码:

if expression {
    uv, err := strconv.ParseUint("18446744073709551448", 10, 64)
}
Run Code Online (Sandbox Code Playgroud)

go type-assertion strconv

1
推荐指数
1
解决办法
1104
查看次数

标签 统计

go ×1

strconv ×1

type-assertion ×1