Golang将字符串转换为int64

Qia*_*hen 61 string go 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
}
Run Code Online (Sandbox Code Playgroud)

ParseInt实际上返回一个int64:

func ParseInt(s string, base int, bitSize int) (i int64, err error){
     //...
}
Run Code Online (Sandbox Code Playgroud)

所以,如果我想从字符串中获取int64,我应该避免使用Atoi,而是使用ParseInt吗?或者某处是否隐藏了Atio64?

ET-*_*-CS 146

将字符串解析为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))
Run Code Online (Sandbox Code Playgroud)

输出:

您好,9223372036854775807类型为int64!

https://play.golang.org/p/XOKkE6WWer

  • 我认为这应该标记为正确答案。 (2认同)
  • 人们还可以删除反射的使用并像这样使用它:`fmt.Printf("Hello, %v with type %T!\n", i, i)` 或者更进一步,可以使用; `fmt.Printf("你好,%v,类型为 %[1]T!\n", i)` (2认同)

Eve*_*man 47

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

  • 虽然你的答案是正确的,但你可以添加一个例子,让它对SO友好 (16认同)

小智 5

另外一个选择:

package main
import "fmt"

func main() {
   var n int64
   fmt.Sscan("100", &n)
   fmt.Println(n == 100)
}
Run Code Online (Sandbox Code Playgroud)

https://golang.org/pkg/fmt#Sscan