GoLang基本数据类型之间的相互转换

数据类型之间的转换

//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

基本数据类型转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类型的值不是转换的目标类型,则会取对应类型的默认值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值