首页后端开发GOgo语言判断类型 go语言类型断言

go语言判断类型 go语言类型断言

时间2023-04-21 01:45:01发布访客分类GO浏览715
导读:讲讲go语言的结构体 作为C语言家族的一员,go和c一样也支持结构体。可以类比于java的一个POJO。 在学习定义结构体之前,先学习下定义一个新类型。 新类型 T1 是基于 Go 原生类型 int 定义的新自定义类型,而新类型 T...

讲讲go语言的结构体

作为C语言家族的一员,go和c一样也支持结构体。可以类比于java的一个POJO。

在学习定义结构体之前,先学习下定义一个新类型。

新类型 T1 是基于 Go 原生类型 int 定义的新自定义类型,而新类型 T2 则是 基于刚刚定义的类型 T1,定义的新类型。

这里要引入一个底层类型的概念。

如果一个新类型是基于某个 Go 原生类型定义的, 那么我们就叫 Go 原生类型为新类型的底层类型

在上面的例子中,int就是T1的底层类型。

但是T1不是T2的底层类型,只有原生类型才可以作为底层类型,所以T2的底层类型还是int

底层类型是很重要的,因为对两个变量进行显式的类型转换,只有底层类型相同的变量间才能相互转换。底层类型是判断两个类型本质上是否相同的根本。

这种类型定义方式通常用在 项目的渐进式重构,还有对已有包的二次封装方面

类型别名表示新类型和原类型完全等价,实际上就是同一种类型。只不过名字不同而已。

一般我们都是定义一个有名的结构体。

字段名的大小写决定了字段是否包外可用。只有大写的字段可以被包外引用。

还有一个点提一下

如果换行来写

Age: 66,后面这个都好不能省略

还有一个点,观察e3的赋值

new返回的是一个指针。然后指针可以直接点号赋值。这说明go默认进行了取值操作

e3.Age 等价于 (*e3).Age

如上定义了一个空的结构体Empty。打印了元素e的内存大小是0。

有什么用呢?

基于空结构体类型内存零开销这样的特性,我们在日常 Go 开发中会经常使用空 结构体类型元素,作为一种“事件”信息进行 Goroutine 之间的通信

这种以空结构体为元素类建立的 channel,是目前能实现的、内存占用最小的 Goroutine 间通信方式。

这种形式需要说的是几个语法糖。

语法糖1:

对于结构体字段,可以省略字段名,只写结构体名。默认字段名就是结构体名

这种方式称为 嵌入字段

语法糖2:

如果是以嵌入字段形式写的结构体

可以省略嵌入的Reader字段,而直接访问ReaderName

此时book是一个各个属性全是对应类型零值的一个实例。不是nil。这种情况在Go中称为零值可用。不像java会导致npe

结构体定义时可以在字段后面追加标签说明。

tag的格式为反单引号

tag的作用是可以使用[反射]来检视字段的标签信息。

具体的作用还要看使用的场景。

比如这里的tag是为了帮助 encoding/json 标准包在解析对象时可以利用的规则。比如omitempty表示该字段没有值就不打印出来。

Go语言中怎样判断数据类型

一般来说,我们不会直接使用ASCII码来处理,因为这样不够直观。比如你说的判定输入是否是字母,是否是数字,那么有个比较直观的方法来处理。如果你看过ASCII码表,那么你就知道字数和字母在ASCII码表中都是连续的,所以这个就比较好解决了。

判定字符ch是否是数字:

if(ch='0' ch='9')

判定字符ch是否是字母:

if(ch='a' ch='z' || ch='A' ch='Z')

当然,有已经定义好的库函数用来判定是否数字和字母,不要加加载头文件ctype.h

判定字符ch是否是数字:

if(isalnum(ch));

判定字符ch是否是字母:

if(isalpha(ch));

这两个函数都是判定成立,结果是true也就是1,判定不成立,结果是false,也就是0.

go语言:数组

数组是一个由 固定长度 的 特定类型元素 组成的序列,一个数组可以由零个或多个元素组成。 数组是值类型

数组的每个元素都可以通过索引下标来访问,索引下标的范围是从0开始到数组长度减1的位置,内置函数 len() 可以返回数组中元素的个数。

2.类型的打印,结果的第二种打印方式

3.对元素的修改或者赋值

4.判断数组是否相等:长度、类型

4.数组的地址:连续存储的空间

5.数组的赋值、地址、取值

6.数组的默认值

7.数组的初始化

8.数组的逆置

9.求数组的最大值、最小值、平均值

10.对数组字符串进行连接

11.冒泡排序法的实现

12.数组做函数的参数

13.二维数组:赋值和地址

14.二维数组:打印和输出

15. 指针数组,每一个元素都是地址

17.数组的内存分配

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: go语言判断类型 go语言类型断言
本文地址: https://pptw.com/jishu/4240.html
java指令代码大全 java指令集 go语言开发怎么赚钱 go语言开发工资

游客 回复需填写必要信息