我想将字符串转换为 int64。我从strconv包中找到的是Atoi函数。它似乎将一个字符串转换为一个 int 并返回它:
strconv
Atoi
// 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 }
ParseInt 实际上返回一个 int64:
func ParseInt(s string, base int, bitSize int) (i int64, err error){ //... }
因此,如果我想从字符串中获取 int64,是否应该避免使用 Atoi,而是使用 ParseInt?或者是否有隐藏在某处的 Atio64?
不,没有 Atoi64。您还应该将 64 作为最后一个参数传递给 ParseInt,否则它可能不会在 32 位系统上产生预期值。
添加缩写示例:
var s string = "9223372036854775807" i, _ := strconv.ParseInt(s, 10, 64) fmt.Printf("val: %v ; type: %[1]T\n", i)
将字符串解析为 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))
输出:
Hello, 9223372036854775807 with type int64!