Go 语言数组学习笔记

在 Go 语言中,数组(Array)是一种固定长度且拥有相同数据类型元素的集合。数组在声明时需要指定其长度,且长度不能改变。

声明数组

我们可以使用以下方式来声明一个数组:

Copy Code
var arr [5]int // 声明一个包含 5 个 int 元素的数组

可以在声明时初始化数组:

Copy Code
arr := [5]int{1, 2, 3, 4, 5} // 定义并初始化一个包含 5 个 int 元素的数组

如果初始化时没有指定所有元素,未指定的元素将自动初始化为零值,如下所示:

Copy Code
arr := [5]int{1, 2} // 定义并初始化前两个元素为 1 和 2,后三个元素为 0

我们也可以使用 ... 来让编译器自动计算数组长度:

Copy Code
arr := [...]int{1, 2, 3, 4, 5} // 定义一个包含 5 个 int 元素的数组

访问数组元素

数组元素可以通过下标来访问,下标从 0 开始,例如:

Copy Code
arr := [5]int{1, 2, 3, 4, 5} // 定义并初始化一个包含 5 个 int 元素的数组 fmt.Println(arr[0]) // 输出第一个元素:1 fmt.Println(arr[3]) // 输出第四个元素:4

数组遍历

可以使用 for 循环来遍历数组:

Copy Code
arr := [5]int{1, 2, 3, 4, 5} // 定义并初始化一个包含 5 个 int 元素的数组 for i := 0; i < len(arr); i++ { fmt.Println(arr[i]) }

也可以使用 range 关键字来遍历数组:

Copy Code
arr := [5]int{1, 2, 3, 4, 5} // 定义并初始化一个包含 5 个 int 元素的数组 for _, v := range arr { fmt.Println(v) }

数组作为函数参数

当我们将数组作为函数参数时,实际上是将数组的指针传递给函数。在函数内部对数组所做的更改会影响到原始数组。

以下是一个修改数组元素的例子:

Copy Code
func modifyArray(arr *[5]int) { for i := 0; i < len(*arr); i++ { (*arr)[i] *= 2 } } func main() { arr := [5]int{1, 2, 3, 4, 5} // 定义并初始化一个包含 5 个 int 元素的数组 modifyArray(&arr) fmt.Println(arr) // 输出 [2 4 6 8 10] }

在这个例子中,我们定义了一个函数 modifyArray,并将数组的指针作为参数传递给它。函数内部将数组中的每个元素都乘以 2,然后我们在 main 函数中输出修改后的数组。

实例演示

以下是一个示例程序,在此程序中我们声明了一个长度为 5 的数组,并使用 for 循环和 range 关键字输出了数组中的元素:

Copy Code
package main import "fmt" func main() { arr := [5]int{1, 2, 3, 4, 5} for i := 0; i < len(arr); i++ { fmt.Println(arr[i]) } for _, v := range arr { fmt.Println(v) } }

输出如下:

Copy Code
1 2 3 4 5 1 2 3 4 5