用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>