596-Golang的reflect与类型转换

获取类型

获取类型需要用到reflect库

reflect.TypeOf()  =>  Type

在这里插入图片描述
在这里插入图片描述
咱们是没有办法直接看到的,我们需要用的v%,这个功能是帮我们把go语言的内部数据输出来
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
因为我们的系统是64位,默认用float64,性能高一些
在这里插入图片描述
在这里插入图片描述
为什么是int32?不是byte?
因为字符这个东西,不是只有英文,不同类型的字符编码是不一样的。
英文、符号 编码方式是 ascii
范围是 1~255
如果是英文,一个字符存的小,但是如果是中文 要考虑多字节 用4个byte,就是int32 中文的编码方式有gbk、utf-8
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
如果现在我们用一个汉字作为字符,它在一个byte就放不下了。
在这里插入图片描述

在这里插入图片描述
啊在汉字中的编码是21834
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
不能用1个int来比较,type只能用type来比较。
而且这个Type不是简简单单可以用的,只能通过占位符v%把它输出

类型转换

类型(数据)

在这里插入图片描述

在这里插入图片描述
小数转换成整数的过程,会把小数的小数点后面的数字截掉,而且只是截掉,不会进行四舍五入的哦
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

但是类型转换不是任何东西都是可以互转的
在这里插入图片描述
我们知道int8的最大值到127而已
在这里插入图片描述
为什么输出的是77?
因为正常情况下,类型转换是直接截断的,
333是int64位的,在二进制中的样子是:
在这里插入图片描述
而int8的样子只有8位在这里插入图片描述

在这里插入图片描述
所以它会丢弃int64类型的前面的8位
只留下在这里插入图片描述
在这里插入图片描述
所以就是77
我们再举一个例子:
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
原始数据2303的二进制表示是这样的:
在这里插入图片描述
int8只保留8位
在这里插入图片描述
最高位是符号位,这个是-1

我们看看能不能把0转为bool值?
在这里插入图片描述

在这里插入图片描述
C语言是可以转的,Go语言是不可以转的
在这里插入图片描述
在这里插入图片描述
Go语言中,bool和int等其他类型是不能互相转换的
我们可以把其他类型转成字符串
在这里插入图片描述

在这里插入图片描述
因为在这里,string认为我们不是要字符串的97,它认为我们要的是97这个编码对应的字符。
在这里插入图片描述
比如说,我们有很多个字符
在这里插入图片描述
在这里插入图片描述
这样写是不可以的,只能接收1个

我们可以这做:
在这里插入图片描述
在这里插入图片描述

string(67)
string([]byte{97, 98, 99})
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

林林林ZEYU

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值