首页 > 区块链 > 「链块技术24期」区块链基础语言——Go语言数组
起来分期  

「链块技术24期」区块链基础语言——Go语言数组

摘要:go语言与区块链原文链接:http://www.liankuai.tech/public/technology/42.html数组是Go语言编程中最常用的数据结构之一。本节从以下角度介绍数组:数组的定义和基本要素、数组的声明和初始化、数组元素的编号及数组元素的获取和修改、数组变量之间的比较和赋值、指

原文链接:http://www.liankuai.tech/public/technology/42.html

数组是Go语言编程中最常用的数据结构之一。本节从以下角度介绍数组:数组的定义和基本要素、数组的声明和初始化、数组元素的编号及数组元素的获取和修改、数组变量之间的比较和赋值、指针数组和数组指针、数组作为函数参数的传递方式和二维数组。

一、数组定义和基本要素

1.1 数组的定义

数组是一系列已编号、长度固定的同一类型数据项序列。

1.2 数组元素

数组中包含的每个数据被称为数组元素,元素类型可以为整形、字符串或者自定义类型。

1.3 数组长度

数组长度在定义后就已经确定且不能更改,在声明时长度可以为一个常量或常量表达式,即在编译期就可以计算结果。在Go语言里,可以通过内置函数 len()或者cap()得到数组长度(元素数量):

「链块技术24期」区块链基础语言——Go语言数组

二、数组的声明和初始化

2.1 数组声明

数组声明的关键词是var,数组类型不同于变量或者常量类型,数组类型既包含了数组长度,也包含了数组元素的类型,即:

「链块技术24期」区块链基础语言——Go语言数组

注:

a. 需要指定元素类型及元素个数;

b. 数组长度必须是常数,必须是大于等于0的整数;

c. 数组长度是类型的组成部分,即不同长度的数组类型不同。

2.2 数组的初始化

数组的初始化就是给数组的变量名赋初值。如果数组仅声明而没有初始化,则此数组元素取默认值。

数组的初始化有如下几种方式,如表1所示。

「链块技术24期」区块链基础语言——Go语言数组

注:

a. 数组声明却没有初始化,元素取零值;

b. 数组长度位置是''...'',则数组长度由初始化数组元素的个数决定;

c. 通过索引号初始化元素,未初始化元素值为零值(默认值);

d. 初始化数组中{}中的元素个数不能大于[]中的数字。

「链块技术24期」区块链基础语言——Go语言数组

三、数组元素的编号及数组元素的获取和修改

3.1 数组元素编号

数组是一系列已编号、长度固定的同一类型的数据项序列。数组通过索引编号,从0开始,即第一个元素索引为 0,第二个元素索引为1,以此类推,第n个元素索引为n-1,如图1所示。

「链块技术24期」区块链基础语言——Go语言数组

3.2 数组元素的获取和修改

数组完成声明初始化后,可以通过索引(位置)来读取或修改,格式为:

「链块技术24期」区块链基础语言——Go语言数组

「链块技术24期」区块链基础语言——Go语言数组

四、数组之间的比较和赋值

4.1 数组之间的比较

数组之间可以使用“==” 或“!=” 进行比较,但不可以使用''<''或''>''。

两个数组相等,要同时满足两个条件:数组长度相等、数组对应位置的元素值相等。否则,两个数组不相等。

「链块技术24期」区块链基础语言——Go语言数组

4.2 数组之间的赋值

两个数组之间赋值,需要同时满足两个条件:数组长度相等、数组元素类型相同。

「链块技术24期」区块链基础语言——Go语言数组

五、指针数组和数组指针

5.1 指针数组

5.1.1 定义

指针数组,即指针的数组。其本质是一个数组,数组元素是指针。

5.1.2 声明格式

指针数组的声明格式与数组的声明类似,只需要在数组元素的类型前加上*,如下所示:

「链块技术24期」区块链基础语言——Go语言数组

示例如下:

「链块技术24期」区块链基础语言——Go语言数组

5.2 数组指针

5.2.1 定义

数组指针,即数组的指针。它本质是一个指针,指向一个数组的首地址。

5.2.2 声明格式

数组指针的声明格式类似于一般指针变量的声明,在中括号之前添加*,如下所示:

「链块技术24期」区块链基础语言——Go语言数组

示例如下:

「链块技术24期」区块链基础语言——Go语言数组

六、数组作为函数参数

在函数那一章节我们已经介绍了两种参数传递方式:值传递和引用传递。每个传递方式中,实参和形参的类型要一一对应。而数组也可以作为函数参数。

6.1 值传递

当实参为数组时,形参也必须是同一类型的数组,即:数组长度相等,数组元素类型相同。当实参和形参均为数组时,参数的传递方式为值传递,即调用函数时将数组(实参)复制一份传递到函数中,在函数中对复制的数组(形参)进行修改,将不会影响到实际参数。

「链块技术24期」区块链基础语言——Go语言数组

6.2 引用传递

当实参是“&数组变量名”,则形参必须是相对应的数组指针(两个数组是同一类型)。在调用函数时将实际参数的地址(指针)传递到函数中,在函数中对数组指针(形参)的修改,将影响到实际参数。

「链块技术24期」区块链基础语言——Go语言数组

七、二维数组

Go语言支持多维数组,其中二维数组是最简单的多维数组。

7.1 声明格式

二维数组本质上是由一维数组组成的。二维数组定义方式如下:

「链块技术24期」区块链基础语言——Go语言数组

7.2 数组元素访问

二维数组中的元素通过指定坐标来访问,访问格式如下:

「链块技术24期」区块链基础语言——Go语言数组

7.3 初始化

二维数组的初始化类似于一维数组的初始化,如表2所示。

「链块技术24期」区块链基础语言——Go语言数组

参考资料

[1] https://baike.baidu.com/item/%E6%8C%87%E9%92%88/2878304?fr=aladdin

-END-

「链块技术24期」区块链基础语言——Go语言数组

附上链块学院网课学习平台链接:http://wk.liankuai.tech/

助教卫星:lkxy007

免责声明
世链财经作为开放的信息发布平台,所有资讯仅代表作者个人观点,与世链财经无关。如文章、图片、音频或视频出现侵权、违规及其他不当言论,请提供相关材料,发送到:2785592653@qq.com。
风险提示:本站所提供的资讯不代表任何投资暗示。投资有风险,入市须谨慎。
世链粉丝群:提供最新热点新闻,空投糖果、红包等福利,微信:msy2134。