天天看点

008 Go语言基础之数组

目录

​​一、Array(数组)​​

​​二、数组定义:​​

​三、数组的初始化​

​​3.1 方法一​​

​​3.2 方法二​​

​​3.3 方法三​​

​​四、数组的遍历​​

​五、多维数组​

​​5.1 二维数组的定义​​

​​5.2 二维数组的遍历​​

​​六、数组是值类型​​

​​七、练习题​​

本文主要介绍Go语言中数组(array)及它的基本使用。

一、Array(数组)

数组是同一种数据类型元素的集合。在Go语言中,数组从声明时就确定,使用时可以修改数组成员,但是数组大小不可变化。

基本语法:

二、数组定义:

比如:​<code>​var a [5]int​</code>​, 数组的长度必须是常量,并且长度是数组类型的一部分。一旦定义,长度不能变。 ​<code>​[5]int​</code>​和​<code>​[10]int​</code>​是不同的类型。

数组可以通过下标进行访问,下标是从​<code>​0​</code>​开始,最后一个元素下标是:​<code>​len-1​</code>​,访问越界(下标在合法范围之外),则触发访问越界,会panic。

三、数组的初始化

数组的初始化也有很多方式。

初始化数组时可以使用初始化列表来设置数组元素的值。

按照上面的方法每次都要确保提供的初始值和数组长度一致,一般情况下我们可以让编译器根据初始值的个数自行推断数组的长度,例如:

我们还可以使用指定索引值的方式来初始化数组,例如:

四、数组的遍历

遍历数组a有以下两种方法:

五、多维数组

Go语言是支持多维数组的,我们这里以二维数组为例(数组中又嵌套数组)。

输出:

注意: 多维数组只有第一层可以使用​<code>​...​</code>​来让编译器推导数组长度。例如:

六、数组是值类型

数组是值类型,赋值和传参会复制整个数组。因此改变副本的值,不会改变本身的值。

注意:

数组支持 “==“、”!=” 操作符,因为内存总是被初始化过的。

​<code>​[n]*T​</code>​表示指针数组,​<code>​*[n]T​</code>​表示数组指针 。

七、练习题

求数组​<code>​[1, 3, 5, 7, 8]​</code>​所有元素的和

找出数组中和为指定值的两个元素的下标,比如从数组​<code>​[1, 3, 5, 7, 8]​</code>​中找出和为8的两个元素的下标分别为​<code>​(0,3)​</code>​和​<code>​(1,2)​</code>​。