strconv.ParseInt
返回的错误仅在编译时被称为实现Error接口的某种类型。类型断言允许您坚持认为它是
strconv.NumError
并直接检查其字段,但如果结果是错误则冒着运行时恐慌的风险:
if err.(*strconv.NumError).Err.Error() == "value out of range" {
    uv, err := strconv.ParseUint("18446744073709551448", 10, 64)
}
一个更灵活的解决方案(但可能太松散 - 用于您的目的)将在
err.Error()
方法上执行子串匹配:
if strings.Contains(err.Error(), "value out of range") {
    uv, err := strconv.ParseUint("18446744073709551448", 10, 64)
}