strconv.ParseInt:解析“18446744073709551615”:值超出范围

问题描述

使用 strconv.ParseInt 解析 uint64 最大值时是否正常?

i,err := strconv.ParseInt("18446744073709551615",10,64)
fmt.Println(i,err)

我收到一个错误"strconv.ParseInt: parsing "18446744073709551615": value out of range",当 uint64 的最大允许值为:18446744073709551615

你能解释一下这种行为吗?

https://golang.org/src/builtin/builtin.go?s=1026:1044#L26

解决方法

调用 ParseUint 来解析一个无符号整数。

ParseInt 函数解析有符号整数。最大有符号整数为 9223372036854775807。

,

根据评论,我将您的代码复制如下:

package main

import (
    "fmt"
    "strconv"
)

func main() {

    i,err := strconv.ParseUint("18446744073709551615",10,64)
    fmt.Println(i,err)

}

输出:

18446744073709551615 <nil>