如果好一点的话
void printQueue(LinkQueue *Q)/*依次输出队列*/
{
if(Q-front==Q-rear)
{
printf("队列为空");
exit(1);
}
while(Q-front!=Q-rear)/*老师告诉我说是这里的while是死循环 , 为什么是死循环呢,不是很懂,请细说 。请帮我改为正确的代码 , 谢谢 。*/
{
printf("%d,", Q-front-data);
Q-front=Q-front-next;
}
//exit(0);
}试试可不可以 , 不行再追问
没有类,C语言有结构体,那么Go的结构体有什么特别之处? Go语言中没有“类”Go语言可以写数据结构嘛的概念Go语言可以写数据结构嘛,也不支持“类”的继承等面向对象的概念 。Go语言中通过结构体的内嵌再配合接口比面向对象具有更高的扩展性和灵活性 。
自定义类型
在Go语言中有一些基本的数据类型Go语言可以写数据结构嘛,如string、整型、浮点型、布尔等数据类型 , Go语言中可以使用type关键字来定义自定义类型 。
自定义类型是定义了一个全新的类型 。我们可以基于内置的基本类型定义,也可以通过struct定义 。例如Go语言可以写数据结构嘛:
通过Type关键字的定义,MyInt就是一种新的类型,它具有int的特性 。
类型别名
类型别名是Go1.9版本添加的新功能 。
类型别名规定:TypeAlias只是Type的别名,本质上TypeAlias与Type是同一个类型 。就像一个孩子小时候有小名、乳名,上学后用学名,英语老师又会给他起英文名,但这些名字都指的是他本人 。
type TypeAlias = Type
我们之前见过的rune和byte就是类型别名 , 他们的定义如下:
类型定义和类型别名的区别
类型别名与类型定义表面上看只有一个等号的差异,我们通过下面的这段代码来理解它们之间的区别 。
结果显示a的类型是main.NewInt,表示main包下定义的NewInt类型 。b的类型是int 。MyInt类型只会在代码中存在,编译完成时并不会有MyInt类型 。
Go语言中的基础数据类型可以表示一些事物的基本属性 , 但是当我们想表达一个事物的全部或部分属性时,这时候再用单一的基本数据类型明显就无法满足需求了,Go语言提供了一种自定义数据类型,可以封装多个基本数据类型,这种数据类型叫结构体,英文名称struct 。也就是我们可以通过struct来定义自己的类型了 。
Go语言中通过struct来实现面向对象 。
结构体的定义
使用type和struct关键字来定义结构体,具体代码格式如下:
其中:
举个例子,我们定义一个Person(人)结构体 , 代码如下:
同样类型的字段也可以写在一行,
这样我们就拥有了一个person的自定义类型 , 它有name、city、age三个字段 , 分别表示姓名、城市和年龄 。这样我们使用这个person结构体就能够很方便的在程序中表示和存储人信息了 。
语言内置的基础数据类型是用来描述一个值的,而结构体是用来描述一组值的 。比如一个人有名字、年龄和居住城市等,本质上是一种聚合型的数据类型
结构体实例化
只有当结构体实例化时,才会真正地分配内存 。也就是必须实例化后才能使用结构体的字段 。
基本实例化
举个例子:
我们通过.来访问结构体的字段(成员变量),例如p1.name和p1.age等 。
匿名结构体
在定义一些临时数据结构等场景下还可以使用匿名结构体 。
创建指针类型结构体
我们还可以通过使用new关键字对结构体进行实例化,得到的是结构体的地址 。格式如下:
推荐阅读
- 直播间关于石榴的文案句子,石榴直播提成是多少
- 如何做跨境电商问卷调查,跨境电商企业调研问卷
- 电脑美图秀秀怎么裁剪,电脑美图秀秀怎么裁剪视频
- java代码怎么远程调试 java控制
- 视频号被冻结了咋办啊微信,微信视频号解封
- 字节跳动游戏开发主管,字节跳动游戏部门叫什么
- 抖音直播销售节奏太快,抖音直播有哪些销售优势
- mysql怎么插入默认值 mysql怎么添加默认约束
- 安卓手机抢票器,手机抢票软件哪个最快2020