数据类型之间的转换
//demo06
fmt.Println("<--------int转浮点---------------->")
n1 := 100
f2 :=float32(n1)
fmt.Println("int类型的100转为float32,结果:",f2)
fmt.Println("<--------浮点转int---------------->")
f3 := 3.14
var n2 = int(f3)
fmt.Println("3.14转为int,结果:",n2)
fmt.Println("<--------int8转int---------------->")
var n3 int8 = 125
var n4 = int(n3)
fmt.Println("int8类型的125转int64,结果:",n4)
fmt.Println("<--------int转int8---------------->")
//这里比较好玩,如果是128 转出来的是-128,129-> -127 依次类推 256为0 如果再大就会是 1,有点一致性哈希环的感觉,不管你传啥都会在-128 - 127之间
//所以在用的时候要特别小心
n5 := 128
var n6 = int8(n5)
fmt.Println("int类型的128转int8,结果:",n6)
fmt.Println("<--------int转uint---------------->")
//这里跟上面一样,会取到正值
var n7 int = -300
var n8 = uint(n7)
fmt.Println("int类型的-300转uint,结果:",n8)
<--------int转浮点---------------->
int类型的100转为float32,结果: 100
<--------浮点转int---------------->
3.14转为int,结果: 3
<--------int8转int---------------->
int8类型的125转int64,结果: 125
<--------int转int8---------------->
int类型的128转int8,结果: -128
<--------int转uint---------------->
int类型的-300转uint,结果: 18446744073709551316
![](https://i-blog.csdnimg.cn/blog_migrate/7698b88158e0c7091419d1e8be993570.png)
基本数据类型转string
转换共有两种方式,推荐使用第一种方式
-
方式1:fmt.Sprintf(format string, a …interface{})
api链接https://studygolang.com/pkgdoc 搜索 fmt
//int类型转string //demo07
n1 := 110
//方式一(推荐方式)
sn1 := fmt.Sprintf("%d",n1)
fmt.Printf("sn1数据类型:%t 值为:%v \n",sn1,sn1)
//方式二
sn2 := strconv.Itoa(n1)
fmt.Printf("sn2数据类型:%t 值为:%v \n",sn2,sn2)
//float64转string
f1 := 3.14
//方式一(推荐)
sf1 := fmt.Sprintf("%.3f",f1)
fmt.Printf("sf1数据类型:%t 值为:%v \n",sf1,sf1)
//第二个参数:'f'(-ddd.dddd) 第三个参数:9 保留小数点后面9位 第四个参数:表示这个小数是float64类型
sf2 := strconv.FormatFloat(f1,'f',3,64)
fmt.Printf("sf2数据类型:%t 值为:%v \n",sf2,sf2)
//bool转string
var flag bool
//方式一(推荐)
sb1 := fmt.Sprintf("%d", flag)
fmt.Printf("sb1数据类型:%t 值为:%v \n",sb1,sb1)
//方式二
sb2 := strconv.FormatBool(flag)
fmt.Printf("sb2数据类型:%t 值为:%v \n",sb2,sb2)
//字符类型转string
c := 'a'
//第一种方式
sc1 := fmt.Sprintf("%c", c)
fmt.Printf("sc1数据类型:%t 值为:%v \n",sc1,sc1)
- 方式2:strconv.FormatXxxx() api跟上面一样搜索 strcover
string类型转基本数据类型
//string转int64 //demo08
sn1 := "100"
//参数1 :待转换的字符串 参数2:转为几进制 参数3:转为int多少
//返回值为一个元组 返回值1:转换的结果 返回值2:异常信息
//这里跟Python有点像 不想要的值可以用_忽略掉
n1, _ := strconv.ParseInt(sn1, 10, 64)
fmt.Printf("n1的类型为:%t 值为:%v \n",n1,n1)
//string转float34
sf1 := "3.14"
f1, _ := strconv.ParseFloat(sf1, 64)
fmt.Printf("f1的类型为:%t 值为:%v \n",f1,f1)
//string转bool
sb1 := "true"
b1, _ := strconv.ParseBool(sb1)
fmt.Printf("b1的类型为:%t 值为:%v \n",b1,b1)
//不是对应的string类型转换为bool,会转换为对应类型默认值
sb2 := "GoLang"
b2, _ := strconv.ParseBool(sb2)
fmt.Printf("b1的类型为:%t 值为:%v \n",b2,b2)
友情提醒
如果string类型的值不是转换的目标类型,则会取对应类型的默认值