Go中的数组(附代码实例)

46 阅读2分钟

数组是由单一类型的项目组成的序列。

我们以这种方式定义一个数组:

var myArray [3]string //an array of 3 strings

并且你可以用......来初始化数组的值:

var myArray = [3]string{"First", "Second", "Third"}

在这种情况下,你也可以让Go做一些工作,为你计算项目:

var myArray = [...]string{"First", "Second", "Third"}

一个数组只能包含相同类型的值。

数组不能被调整大小,你必须在Go中明确定义数组的长度。这也是数组类型的一部分。另外,你不能使用变量来设置数组的长度。

由于这个限制,在Go中很少直接使用数组,而是使用分片(后面会详细介绍)。分片在引擎盖下使用数组,所以仍然有必要了解它们的工作原理。

你可以用我们在字符串中已经使用的方括号符号来访问数组中的一个项目,以访问一个字符:

myArray[0] //indexes start at 0
myArray[1]

你可以为数组中的一个特定位置设置一个新的值:

myArray[2] = "Another"

而且你可以用len() 函数获得数组的长度:

len(myArray)

数组是价值类型。这意味着复制一个数组:

anotherArray := myArray

或将一个数组传递给一个函数,或从一个函数中返回,都会创建一个原始数组的副本。

这与其他编程语言不同。

让我们做一个简单的例子,在复制一个数组项之后,我们给它分配一个新的值。看,这个拷贝没有改变:

var myArray = [3]string{"First", "Second", "Third"}
myArrayCopy := myArray
myArray[2] = "Another"

myArray[2]     //"Another"
myArrayCopy[2] //"Third"

记住,你只能在数组中添加单一类型的项目,因此,例如设置myArray[2] = 2 ,会引起错误。

低级别的,元素在内存中是连续存储的。