Golang int64转换为字符串的方法

1,760 阅读2分钟

有时我们必须在Golang中把int64转换成字符串。我们可以使用不同的函数来实现这一点。

使用strconv.Itoa()将Golang的int64转换为字符串

Golang strconv.Itoa()函数可以用来将int64转换为字符串。让我们看一下一个简单的例子。

package main

import (
	"fmt"
	"strconv"
)

func main() {
	s := strconv.Itoa(97)
	fmt.Println(s)
}

输出:

97

为什么不使用string()将int64转换为字符串?

如果你想知道为什么我们不能使用string()函数来传递int参数并创建一个字符串对象,让我们看看当我们尝试这样做时会发生什么。

s := string(97)
fmt.Println(s)  // prints "a"

string()函数将整数参数视为字符串的码位值,并返回相应的字符串。因此,我们得到的不是一个值为 "97 "的字符串,而是 "a",因为它的Unicode码点值是97。

用base将int64转换为字符串

如果我们想用其他的基数表示字符串,怎么办?不用担心,strconv包有一个FormatInt()函数可以实现这种转换。

package main

import (
	"fmt"
	"strconv"
)

func main() {
	var a int64 = 28
	var b int64 = 4
	
	fmt.Println(strconv.FormatInt(a, 16)) // prints "1c"
	fmt.Println(strconv.FormatInt(b, 2)) //  prints "100"
}

那么将int8或int32转换为字符串呢?

Itoa()和FormatInt()函数只对int64工作。所以,如果你要将任何不同的整数类型转换为字符串,请使用int()函数首先将它们转换为int64格式。

var a int32 = 28
fmt.Println(strconv.Itoa(a)) 
// error "cannot use a (type int32) as type int in argument to strconv.Itoa"

正确的转换方式是:

a := int8(28)
x := int(a)
	
fmt.Println(strconv.Itoa(x)) // prints "28"

结论

如果你必须将int64转换为字符串,请使用strconv.Itoa()函数。如果你想用不同的基数表示字符串,请使用FormatInt()函数。