本文摘自php中文网,作者尚,侵删。

Go不会对数据进行隐式的类型转换,只能手动去执行转换操作。下面我们来看一下go语言中进行数据类型转换的方法 。
简单的转换操作
转换数据类型的方式很简单。
1 |
|
例如:
1 2 3 4 5 |
|
Go允许在底层结构相同的两个类型之间互转。例如:
1 2 3 4 5 6 7 8 9 10 11 |
|
但注意:
1、不是所有数据类型都能转换的,例如字母格式的string类型"abcd"转换为int 肯定会失败
2、低精度转换为高精度时是安全的,高精度的值转换为低精度时会丢失精度。例如int32转 换为int16,float32转换为int
3、这种简单的转换方式不能对int(float)和string进行互转,要跨大类型转换,可以使用 strconv包提供的函数
strconv
strconv包提供了字符串与简单数据类型之间的类型转换功能。可以将简单类型转换为字符 串,也可以将字符串转换为其它简单类型。
这个包里提供了很多函数,大概分为几类:
1、字符串转int:Atoi()
2、int转字符串: Itoa()
3、ParseTP类函数将string转换为TP类型:ParseBool()、ParseFloat()、ParseInt()、 ParseUint()。因为string转其它类型可能会失败,所以这些函数都有第二个返回值表示是否转 换成功
4、FormatTP类函数将其它类型转string:FormatBool()、FormatFloat()、FormatInt()、 FormatUint()
5、AppendTP类函数用于将TP转换成字符串后append到一个slice中:AppendBool()、 AppendFloat()、AppendInt()、AppendUint()
还有其他一些基本用不上的函数,见官方手册:go doc strconv或者 https://golang.org/pkg/strconv/。
当有些类型无法转换时,将报错,返回的错误是strconv包中自行定义的error类型。有两种 错误:
1 2 3 4 |
|
例如,使用Atoi("a")将"a"转换为int类型,自然是不成功的。如果 print输出err信息,将显示:
1 2 3 |
|
string和int的转换
最常见的是字符串和int之间的转换:
1.int转换为字符串:Itoa()
1 2 |
|
2.string转换为int:Atoi()
1 |
|
由于string可能无法转换为int,所以这个函数有两个返回值:第一个返回值是转换成int的 值,第二个返回值判断是否转换成功。
1 2 3 4 5 6 7 8 |
|
Parse类函数
Parse类函数用于转换字符串为给定类型的值:ParseBool()、ParseFloat()、ParseInt()、 ParseUint()。
由于字符串转换为其它类型可能会失败,所以这些函数都有两个返回值,第一个返回值保存 转换后的值,第二个返回值判断是否转换成功。
1 2 3 4 |
|
ParseFloat()只能接收float64类型的浮点数。
ParseInt()和ParseUint()有3个参数:
1 2 3 4 |
|
bitSize参数表示转换为什么位的int/uint,有效值为0、8、16、32、64。当bitSize=0的时 候,表示转换为int或uint类型。例如bitSize=8表示转换后的值的类型为int8或uint8。
相关阅读 >>
更多相关阅读请进入《Go语言》频道 >>

Go语言101
一个与时俱进的Go编程知识库。