数组是具备相同惟一类型的一组已编号且长度固定的数据项序列,这种类型能够是任意的原始类型例如整形、字符串或者自定义类型。数组
在Go语言中数组是固定长度的数据类型,它包含相同类型的连续的元素,这些元素能够是内建类型,像数字和字符串,也能够是结构类型,元素可以经过惟一的索引值访问,从0开始。缓存
数组是颇有价值的数据结构,由于它的内存分配是连续的,内存连续意味着能够让它在CPU缓存中待更久,因此迭代数组和移动元素都会很是迅速。数据结构
第一种,经过指定数据类型和元素个数(数组长度)来声明数组。函数
声明一个长度为5的整数数组:spa
var array [5]int
声明一个长度为5的整数数组并初始化:code
var array [5]int = [5]int{1, 2, 3, 4, 5}
第二种,一种快速建立和初始化数组的方法是使用数组字面值。数组字面值容许咱们声明咱们须要的元素个数并指定数据类型。blog
声明一个长度为5的字符串数组并初始化每一个元素:索引
array := [5]string{"Linux", "Python", "Java", "Golang", "DBA"}
第三种,若是你把长度写成…,Go编译器将会根据你的元素来推导出长度。内存
经过初始化值的个数来推导出数组容量:element
array := [...]int{1, 2, 3, 4, 5}
第四种,若是咱们知道想要数组的长度,可是但愿对指定位置元素初始化。
声明一个长度为5的整数数组,为索引为1和3的位置指定元素初始化,剩余元素为该元素类型的默认值:
array := [5]int{1: 1, 3: 3}
注意:当一个数组被声明时,它里面包含的每一个元素都会被初始化为该元素类型的默认值。一旦数组被声明了,那么它的数据类型跟长度都不能再被改变。若是你须要更多的元素,那么只能建立一个你想要长度的新的数组,而后把原有数组的元素拷贝过去。
使用内置函数len()和cap()返回数组长度和数组容量。实例以下:
package main import "fmt" func main() { array := [2]int{} fmt.Printf("数组长度:%d,数组容量:%d\n", len(array), cap(array)) }
运行结果:
数组长度:2,数组容量:2
使用 [] 操做符来访问数组元素:
改变索引为2的元素的值
array := [5]int{1, 2, 3, 4, 5} array[2] = 100
注意:数组能够经过下标进行访问,数组下标是从0开始,最后一个元素下标是:len(array)-1。若是下标在数组合法范围以外,则触发访问越界。实例以下:
package main func main() { array := [5]int{1, 2, 3, 4, 5} array[5] = 100 }
编译错误:
./main.go:5:7: invalid array index 5 (out of bounds for 5-element array)
数组赋值操做,一个数组能够被赋值给任意相同类型的数组:
注意:
数组的类型同时包括数组的长度和能够被存储的元素类型,数组类型彻底相同才能够互相赋值
var arr1 [5]string arr2 := [5]string{"Linux", "Python", "Java", "Golang", "DBA"} arr1 = arr2
数组老是一维的,可是能够组合成多维的。多维数组一般用于有父子关系的数据或者是坐标系数据:
声明一个二维数组
var array [3][6]int
使用数组字面值声明并初始化
array := [4][2]int{{10, 11}, {20, 21}, {30, 31}, {40, 41}}
指定外部数组索引位置初始化
array := [4][2]int{1: {20, 21}, 3: {40, 41}}
同时指定内外部数组索引位置初始化
array := [4][2]int{1: {20, 21}, 3: {40, 41}}
使用内置函数len()和cap()返回多维数组长度和多维数组容量。实例以下:
package main import "fmt" func main() { array := [3][6]int{} fmt.Printf("数组长度:%d,数组容量:%d\n", len(array), cap(array)) }
运行结果:
数组长度:3,数组容量:3
经过 [] 操做符来访问数组元素:
var array [2][2]int array[0][0] = 0 array[0][1] = 1 array[1][0] = 2 array[1][1] = 3
相同类型的多维数组相互赋值:
var arr1 [2][2]int var arr2 [2][2]int arr2[0][0] = 0 arr2[0][1] = 1 arr2[1][0] = 2 arr2[1][1] = 3 arr1 = arr2