首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

区块链基础语言——Go语言数组

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

1

数组定义和基本要素

1.1 数组的定义

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

1.2 数组元素

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

1.3 数组长度

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

2

数组的声明和初始化

2.1 数组声明

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

注:

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

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

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

2.2 数组的初始化

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

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

注:

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

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

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

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

3

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

3.1 数组元素编号

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

3.2 数组元素的获取和修改

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

4

数组之间的比较和赋值

4.1 数组之间的比较

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

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

4.2 数组之间的赋值

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

5

指针数组和数组指针

5.1 指针数组

5.1.1 定义

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

5.1.2 声明格式

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

示例如下:

5.2 数组指针

5.2.1 定义

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

5.2.2 声明格式

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

示例如下:

6

数组作为函数参数

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

6.1 值传递

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

6.2 引用传递

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

7

二维数组

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

7.1 声明格式

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

7.2 数组元素访问

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

7.3 初始化

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

参考资料

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

本文完,获取更多资讯,敬请关注区块链工程师。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180815G1KA4P00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券