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

Ali*_*dov -1 go uint64

用 解析 uint64 最大值时这是正常行为strconv.ParseInt吗?

i, err := strconv.ParseInt("18446744073709551615", 10, 64)
fmt.Println(i, err)
Run Code Online (Sandbox Code Playgroud)

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

你能解释这种行为吗?

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

thw*_*hwd 5

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

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


小智 5

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

package main

import (
    "fmt"
    "strconv"
)

func main() {

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

}
Run Code Online (Sandbox Code Playgroud)

输出:

18446744073709551615 <nil>
Run Code Online (Sandbox Code Playgroud)