数据类型转换
同底层数据类型转换 ,比如将 int 类型数据转换成 int8 int16 int32 int64
package main
import "fmt"
func main() {
//同底层数据类型之间的转换
// 定义数字类型变量
var num int = 8
var num1 int8
var num2 int16
var num3 int32
var num4 float32
// 转换
num1 = int8(num)
num2 = int16(num)
num3 = int32(num)
num4 = float32(num)
fmt.Printf("num1 类型: %T, num1=%v \n",num1,num1)
fmt.Printf("num2 类型: %T, num2=%v \n",num2,num2)
fmt.Printf("num3 类型: %T, num3=%v \n",num3,num3)
fmt.Printf("num4 类型: %T, num4=%v \n",num4,num4)
fmt.Printf("num 类型: %T, num=%v \n",num,num)
}
运行结果:

注意: 1) 类型转换只是将某个变量的值转换成其他类型,而被转换的变量没有影响
2) 高精度int类型转低精度int类型,如果超出低精度范围则会做溢出处理,程序不会报错
不同数据类型转换, 比如将 int转成string ,string转成 int32
2.1 int bool转string
package main
import (
"fmt"
"strconv"
)
func main() {
//不同底层数据类型之间的转换 int int8 转 string
// 定义数字类型变量
var num int = 8
var num2 int16 = 10
var num3 float32 = 12.12
var bool1 bool = true
// 转换
//注意参数: 第一个参数 必须是int64类型, 第二个参数 2-36 表示数值的进制
str1 := strconv.FormatInt(int64(num),10)
fmt.Printf("str type: %T, str=%v \n",str1,str1)
str2 := strconv.FormatInt(int64(num2),10)
fmt.Printf("str type: %T, str=%v \n",str2,str2)
// 参数1:只能是float64 ,参数2:格式 ,参数3:保留小数位数, 参数4:所转类型位数
str3 := strconv.FormatFloat(float64(num3),'f',2,32)
fmt.Printf("str type: %T, str=%v \n",str3,str3)
str4 := strconv.FormatBool(bool1)
fmt.Printf("str type: %T, str=%v \n",str4,str4)
}
执行结果:

2.2 string转 int bool
package main
import (
"fmt"
"strconv"
)
func main() {
//不同底层数据类型之间的转换 string转 int int8
// 定义变量
var str1 string = "8"
var str2 string = "12.12"
var str3 string = "true"
// 转换
// 返回的int64, 可以根据需要再进行同底层转换
num1,_ := strconv.ParseInt(str1,10,64)
fmt.Printf("num1 类型:%T , num1=%v \n",num1,num1)
num2,_ := strconv.ParseFloat(str2,64)
fmt.Printf("num2 类型:%T , num2=%v \n",num2,num2)
bool1,_ := strconv.ParseBool(str3)
fmt.Printf("bool1 类型:%T , bool1=%v \n",bool1,bool1)
}
执行结果:

如果是单纯的 int转 sting 或者 string 转 int 那么就可以用 strconv的 Itoa(),Atoi()
package main
import (
"fmt"
"strconv"
)
func main() {
//int 转 string
var i int = 12122
str := strconv.Itoa(i)
fmt.Printf("str 类型:%T , str=%v \n",str,str)
//string 转 int
var str1 string = "1123"
intData,_ := strconv.Atoi(str1)
fmt.Printf("intData 类型:%T , intData=%v \n",intData,intData)
}