(go语言入门教程图解)(go语言入门指南)

结构是不同类型的数据的集合,这些数据叫作结构的字段。Golang通过组合一个或多个类型(包括内置类型和用户定义类型)来声明和创建新的数据类型。结构中的每个数据字段声明都必须是已知类型,这些类型可以是内置类型或其他用户定义类型。

结构是Golang中创建用户定义类型的唯一方法,结构是通过一组固定且唯一的字段来声明。结构使得程序模块化,并允许在系统范围内创建和传递复杂的数据结构。结构常用于创建记录集。

结构的声明从关键字type开始,然后是新结构的名称,最后是关键字struct,花括号内,指定了一系列具有名称和类型的数据字段:

(go语言入门教程图解)(go语言入门指南)

声明新的结构类型

声明具有三个不同数据类型的字段的结构类型,名字叫作rectangle。定义好新结构后,就可以使用它的字面量。

(go语言入门教程图解)(go语言入门指南)

rectangle结构及其字段不会导出到其他包,因为标识符是以小写字母开头。在Golang中,如果名称以大写字母开头,标识符可以导出到其他包,否则只能限制在所声明它的包中访问。

声明结构实例

var关键字声明结构变量rect,然后使用点表示法将值赋给结构字段。

(go语言入门教程图解)(go语言入门指南)

初始化声明结构实例

创建结构rectangle的实例,使用结构字面量给它每个字段赋初始值:

(go语言入门教程图解)(go语言入门指南)

使用关键字new创建结构实例

new创建的实例,返回的是实例的指针,也可以用点符号访问它的字段:

(go语言入门教程图解)(go语言入门指南)

使用取指符&创建结构实例

取指符同样返回的是实例的指针:

(go语言入门教程图解)(go语言入门指南)

创建有嵌套的结构类型

可以使用其他结构类型作为结构字段的类型,创建具有嵌套的结构。将一个结构嵌套到另一个结构中是创建更复杂结构的有效方法:

(go语言入门教程图解)(go语言入门指南)

使用字段标签

在定义结构时,可选择地为每个字段添加标签,标签用生字符串表示,用反引号``包围

标签常用于与其它数据格式如json、xml等交互时作为目标格式的属性使用,被正常的程序流所忽略

(go语言入门教程图解)(go语言入门指南)

添加方法到结构中

使用方法接收器把方法添加到结构类型当中,方法接收器在定义函数时写在关键字func和函数字之间,即声明一个结构类型的变量,函数体内部就可以引用该结构实例:

函数定义了接收器之后,该函数成为接收器结构类型的方法,所有与接收器类型相同的结构实例都可以通过点符号调用该函数。

(go语言入门教程图解)(go语言入门指南)

为结构字段分配默认值

使用构造函数可以实现自定义默认值的赋值方法。Info函数用于为一个结构实例的字段赋予默认值,因为要改变函数外部实例的值,所以接收器定义为指针。

这种构造函数只是一种技巧方法而不是Golang规定中的一部分。

(go语言入门教程图解)(go语言入门指南)

查询结构的类型

reflect包支持检查结构的底层类型:

(go语言入门教程图解)(go语言入门指南)

比较两个结构

结构可以使用比较操作符进行比较:

(go语言入门教程图解)(go语言入门指南)

按值和按指针复制结构类型

r2将与r1相同,它是r1的副本,而不是对它的引用。对r2所做的任何更改都不会应用于r1,反之亦然。r3和r1引用同一个实例,当r3被更新时,r1也会变化,因为r1和r3引用的是相同的内存空间。

(go语言入门教程图解)(go语言入门指南)

声明:我要去上班所有作品(图文、音视频)均由用户自行上传分享,仅供网友学习交流,版权归原作者心学苹果鱼所有,原文出处。若您的权利被侵害,请联系删除。

本文标题:(go语言入门教程图解)(go语言入门指南)
本文链接:https://www.51qsb.cn/article/dvjmq9.html

(0)
打赏微信扫一扫微信扫一扫QQ扫一扫QQ扫一扫
上一篇2023-08-03
下一篇2023-08-03

你可能还想知道

发表回复

登录后才能评论