Go 基本数据类型的相互转换

概念

Golang 和 java / c 不同,Go 在不同类型的变量之间赋值时都需要显式转换

也就是说 Golang 中数据类型不能自动转换

表达式 T(v) 将值 v 转换为类型 T

T: 就是数据类型,比如 int32,int64,float32 等等

v: 就是需要转换的变量

注意事项

1) Go 中,数据类型的转换可以是从  范围小 --> 范围大,也可以 范围大 --> 范围小

     但是不管高精度转低精度,还是低精度转高精度,都必须一定要 手动的显式转换

2) 被转换的是变量存储的数据(即值),变量本身的数据类型并没有变化

3) 在转换中,比如将 int64 转成 int8 【-128---127】 ,编译时不会报错,只是转换的结果是按 溢出处理,

和我们希望的结果不一样。 因此在转换时,需要考虑范围

ps: 大 转 小 能不写 就别写,这个就是隐藏的炸弹,根本不会有任何提示。

      放在复杂的业务逻辑中,很难排查判断出是这里的问题

练习一:判断是否能够编译通过

练习二:判断是否能够编译通过

一句话总结:

字面值如果

能看出来 (128直接超出 int8 范围) 

能算出来(127+127 = 254 也超出)

编译时就会报错

如果不是,编译不报错,运行不报错,

只不过结果可能会溢出,那样结果不准确

n2 = int8(n1) + 127  这里只有 127 是字面值,即使你觉的 n1 是一个已经明确赋值的变量

和 string 的相互转换

注意事项

其他 转 string 一般问题不大

string 转 其他  尤其要注意,要确保 String 类型能够转成有效的数据

比如 我们可以 把 "123" , 转成一个整数,但是不能把 "hello" 转成一个整数,

如果这样做,Golang 不会报错直接将其转成 0 , 其它类型也是一样的道理. float => 0  bool => false

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值