跳到主要内容

6.数组

1. 数组介绍

数组是一组相同数据类型的元素集合。

数组中的每个元素可以是任意类型,例如 intstring

数组的元素数量被称为数组的长度。

在 Go 语言中,数组是固定长度的,长度是数组类型的一部分,也就是说 [5]int[10]int 是不同的类型。

Go 语言中数组的另一个特点是占用内存的连续性,数组中的元素会被分配到连续的内存地址中,因此通过索引访问数组元素的速度非常快。

与数组相关的类型是 Slice(切片),切片是可以动态增减长度的序列,功能更灵活,但理解切片首先要理解数组。

2.数组定义

使用语法 var 数组变量名 [元素数量]类型 定义数组。

例如:var a [5]int,数组的长度必须是常量,并且长度是数组类型的一部分,因此 [5]int[4]int 是不同的类型。

一旦定义,数组的长度是不可变的,但数组中的元素是可以改变的。

package main

import "fmt"

func main() {
// 定义一个长度为 5 元素类型为 int 的数组 a
var a [5]int
// 定义一个长度为 3 元素类型为 int 的数组 b 并赋值
var b [3]int
b[0] = 80
b[1] = 100
b[2] = 96

fmt.Println(a) // 输出:[0 0 0 0 0]
fmt.Println(b) // 输出:[80 100 96]
}

数组作为函数参数或赋值时是值传递,即会创建一个新的数组副本,因此修改 arr2 并不会影响原数组 arr

package main

import "fmt"

func main() {
var arr = [3]int{1, 2, 3}
arr2 := arr
arr2[0] = 3
fmt.Println(arr, arr2) // 输出:[1 2 3] [3 2 3]
}

3. 数组的遍历

定义一个字符串数组 a,包含 "北京""上海""深圳" 三个元素。使用 for 循环,通过数组的长度 len(a) 遍历数组的每个元素。

在循环中,fmt.Println(a[i]) 逐行打印每个元素。

package main

import "fmt"

func main() {
var a = [...]string{"北京", "上海", "深圳"}
for i := 0; i < len(a); i++ {
fmt.Println(a[i])
}
}

输出结果

北京
上海
深圳

4.k.v 遍历数组

使用 for 循环结合 range 来遍历数组。

package main

import "fmt"

func main() {
var a = [...]string{"北京", "上海", "深圳"}
for index, value := range a {
fmt.Println(index, value)
}
}

输出结果:

0 北京
1 上海
2 深圳