将字符串转换为 int64

我想将一个字符串转换为 int64。我从 strconv包中发现的是 Atoi函数。它似乎将一个字符串强制转换为一个 int 并返回它:

// Atoi is shorthand for ParseInt(s, 10, 0).
func Atoi(s string) (i int, err error) {
i64, err := ParseInt(s, 10, 0)
return int(i64), err
}

The ParseInt actually returns an int64:

func ParseInt(s string, base int, bitSize int) (i int64, err error){
//...
}

So if I want to get an int64 from a string, should I avoid using Atoi, instead use ParseInt? Or is there an Atio64 hidden somewhere?

155112 次浏览

不,没有 Atoi64。您还应该将64作为最后一个参数传递给 ParseInt,否则它可能不会在32位系统上产生预期的值。

添加缩写示例:

var s string = "9223372036854775807"
i, _ := strconv.ParseInt(s, 10, 64)
fmt.Printf("val: %v ; type: %[1]T\n", i)

Https://play.golang.org/p/fuc8qo0-lyn

将 string 解析为 int64示例:

// Use the max value for signed 64 integer. http://golang.org/pkg/builtin/#int64
var s string = "9223372036854775807"
i, err := strconv.ParseInt(s, 10, 64)
if err != nil {
panic(err)
}
fmt.Printf("Hello, %v with type %s!\n", i, reflect.TypeOf(i))

output:

你好,int64型9223372036854775807!

Https://play.golang.org/p/xokke6wwer

另一个选择:

package main
import "fmt"


func main() {
var n int64
fmt.Sscan("100", &n)
fmt.Println(n == 100)
}

Https://golang.org/pkg/fmt#sscan