0


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})
标签: golang

本文转载自: https://blog.csdn.net/LINZEYU666/article/details/120382929
版权归原作者 self-discipline-Lin 所有, 如有侵权,请联系我们删除。

“596-Golang的reflect与类型转换”的评论:

还没有评论