问题描述
使用 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>