go 语言 int、 int64、string 相互转换

2018-12-14
golang
6410

速记

// string -> int
int, err := strconv.Atoi(string)

// string -> int64
int64, err := strconv.ParseInt(string, 10, 64)

// int -> string
string := strconv.Itoa(int)

// int64 -> string
string := strconv.FormatInt(int64, 10)

详解

int to string

使用方法 strconv.Itoaint 类型转化为字符串,不会抛出错误

s := strconv.Itoa(97) // s == "97"

需要注意,这里不要直接用string()转化,string(int)会转化为 Unicode

s := string(97) // s == "a"

int64 to string

使用方法strconv.FormatInt将int64转化为string,

第二个参数为数字的进制数, 这个函数和js的toString比较像,对toString不了解的可以看这里 JavaScript中一些被忽略的参数

var n int64 = 97
s := strconv.FormatInt(n, 10) // s == "97" (decimal)
var n int64 = 97
s := strconv.FormatInt(n, 16) // s == "61" (16 进制,即hex转码)

string to int

使用 strconv.Atoi 将string解析为int。 不是所有string都能转化为int,如解析s22,会抛出 invalid syntax错误

s := "97"
if n, err := strconv.Atoi(s); err == nil {
    fmt.Println(n+1)
} else {
    fmt.Println(s, "is not an integer.")
}
// Output: 98

string to int64

使用 strconv.ParseInt 方法将string转为为int64.

s := "97"
n, err := strconv.ParseInt(s, 10, 64)
if err == nil {
    fmt.Printf("%d of type %T", n, n)
}
// Output: 97 of type int64

第二个参数,表示数字字符串的进制,如二进制,八进制,十进制等

第三个参数,返回结果的bit大小, 如0, 8, 16, 32, 64,分别转化为 int,int8, int16, int32, int64,每种int都有各自的范围,超出范围会报错

参考文档

https://blog.csdn.net/pkueecser/article/details/50433460

https://yourbasic.org/golang/convert-int-to-string/