Go语言之类型转换
在go语言中,一个类型可以转换为另一种类型的值,这个转换叫类型转换,在go语言中不存在隐式类型转换,所有的转换必须显式声明
语法如下:
v1 := T(v) //将变量v转换为类型T,并返回转换后的变量v1
- v1:转换为T类型之后的变量
- T:需要转换的类型,如图int32、int64、float64等
- v:需要转换的变量
在 Go 语言类型转换过程中,从一个取值范围较小的类型转换到一个取值范围较大的类型(例如将int16转换为int32),那么完全可以,不会造成精度丢失
当从一个取值范围较大的转换到取值范围较小的类型时(例如将 int32 转换为 int16 或将 float32 转换为 int),会发生精度丢失(截断)的情况,此时可以先将int32转为字符串然后在将字符串转为int,其余类似
一、将int转换为string类型
1、通过strconv包实现转化,如图:

运行结果如下:

2、通过fmt包的Sprintf函数实现转换,如图:

运行结果如下:

注:fmt.Sprintf:把格式字符串输出到指定字符串中,并返回字符串,可以用于赋值操作
| 格式 | 描述 |
| %b | 整型以二进制方式显示 |
| %o | 整型以八进制方式显示 |
| %d | 整型以十进制方式显示 |
| %x | 整型以十六进制方式显示 |
| %X | 整型以十六进制、字母大写方式显示 |
二、将int64转为string:
1、通过strconv包实现转换,如图:

注:strconv.FormatInt 的第二个参数,表示要转成的字符串类型是几进制,这里转成十进制
运行结果如下:

2、通过fmt包的Sprintf函数实现转换,如图:

运行结果如下:

三、将float转换为string类型
1、使用strconv包实现转换,如图:

- f:表示不使用指数形式,除了f还有b(二进制)、e(10进制)、E(10进制)、g、G等,常用就是f
- 1:表示保留一位小数
- 64:表示当前转换的变量类型,a为float64,因此此处为64
运行结果如下:

注:strconv.FormatFloat 函数的第一个参数,只能接受 float64 类型的变量。因此,如果需要将 float32 类型转成 string,需要先将 float32 转成 float64
下面是将float32变量a转换为字符串,如图:


2、通过fmt包的Sprintf函数实现转换,如图:

运行结果如下:

注:%.1f表示保留一位小数,可根据需要设置保留的位数
四、将string转换为int
1、通过strconv包的Atoi实现转换,如图:

运行结果如下:

注:strconv.Atoi返回两个值,一个是转换后的,一个是错误值
2、通过strconv的ParseInt函数实现转换,如图:

strconv.ParseInt 函数,返回两个参数,第一个参数是转换后的字符串。第二个参数是,如果转换失败,返回的失败信息,10表示要转换的字符串的进制数,64表示转换后的位数

五、将string转换为float
1、通过strconv包的ParseFloat函数实现转换,如图:

strconv.ParseFloat 函数,返回两个值,第一个值是转换后的 float64 类型的变量。第二个值是,如果转换失败,返回的失败信息
strconv.ParseFloat 函数的第一个参数,接受要转换的字符串。第二个参数,表示转换后的位数
运行结果如下:

六、字符串与字节切片直接转换
1、将字符串转换为字节切片,如图:


2、将字节切片转换为字符串并输出,通过string类型转换,如图:


注意:在将字节切片转换为字符串的时候,只有当字节切片中的元素是utf8编码的方式是转换为字符串后才有数据,否则可能出现空或者错误, 可通过utf8.Valid()来查看编码,如图:

七、将map类型转换为字符串类型
1、将map类型转换为字符串类型,如图:

运行结果如下:

八、强制类型转换
强制类型转换需要借助com包,地址为:github.com/unknwon/com
1、下面例子通过强制转换将字符串转换为其他类型,如图:

运行结果如下:

更多用法可参考com包,查看包中文档方式:go doc com


