Skip to content

Go 语言笔记:数组

数组

数组,固定长度的特性类型的元素组成的序列,有零或多个元素。数组的长度是固定的,Go 中较少使用。

数组的声明

数组可以使用 [len]Type 来声明,其中 len 代表长度,Type 代表元素类型。

go
// 声明长度为 5 的数组,所有元素的值均为 0
var nums [5]int

// 给第一个元素赋值
nums[0] = 10
fmt.Println(nums) // [10 0 0 0 0]

也可以在声明时直接对数组进行初始化

go
var nums = [5]int{15}
fmt.Println(nums) // [15 0 0 0 0]

或者是直接使用短声明

go
nums := [5]int{20}
fmt.Println(nums) // [20 0 0 0 0]

当元素个数太多,也可以利用编译器,为我们计算数组的长度

go
nums :=[...]int{55, 20, 30, 50, 60, 80}
fmt.Println(len(nums)) // 6

通过指定索引为数组的元素赋值

go
nums := [5]int{2:30, 4:50}
fmt.Println(nums) // [0 0 30 0 50]

数组的长度是数组的一部分,两个不同长度的数组,是不同的类型,如 [5]int[10]int

数组的长度

使用内置的 len 函数,可以返回指定数组的长度

go
nums :=[...]int{55, 20, 30, 50, 60, 80}
fmt.Println(len(nums)) // 6

数组是值类型

Go 语言中数组是值类型,而非引用类型,当把数组赋值给一个新的变量时,该变量是对原数组进行了一次拷贝,对新变量的值进行改变时,原数组的值不变。

go
nums := [5]int{10,20,30,40,50}
copy := nums
copy[1] = 90
fmt.Println(nums) // [10 20 30 40 50]
fmt.Println(copy) // [10 90 30 40 50]

数组的使用

循环可以获取数组的索引和索引对应的元素

go
nums := [5]int{10,20,30,40,50}
for index, value := range nums {
	fmt.Printf("nums[%d] = %d\n", index, value)
}

// 打印结果
nums[0] = 10
nums[1] = 20
nums[2] = 30
nums[3] = 40
nums[4] = 50

// 忽略索引
for _, value := range nums {
}

多维数组

多维数组的声明类似一维数组

go
 var arr [2][3]int
 var arr [2][3]int{{0, 1, 2}, {1, 2, 3}}
 arr := [2][3]int{{0, 1, 2}, {1, 2, 3}}

Released under the MIT License.