深入浅出 Go 语言:数组与切片
引言
在 Go 语言中,数组和切片是两种非常重要的数据结构,用于存储和操作一组相同类型的元素。虽然它们看起来相似,但在使用上有很大的区别。理解数组和切片的区别以及如何正确使用它们,对于编写高效、可维护的 Go 程序至关重要。
1. 数组简介
1.1 什么是数组?
数组(Array)是 Go 语言中最基本的集合类型之一,用于存储固定数量的相同类型元素。数组的长度是固定的,一旦定义后不能改变。每个元素在数组中都有一个索引,索引从 0 开始,依次递增。
1.1.1 定义数组
在 Go 语言中,数组的定义方式如下:
- 指定长度和类型:
var arr [N]Type
,其中N
是数组的长度,Type
是数组中元素的类型。 - 初始化数组:可以使用花括号
{}
初始化数组,并为每个元素赋值。
以下是一个简单的例子,展示了如何定义和初始化一个整数数组:
package main
import "fmt"
func main() {
// 定义一个长度为 5 的整数数组
var arr [5]int
// 初始化数组
arr[0] = 1
arr[1] = 2
arr[2] = 3
arr[3] = 4
arr[4] = 5
// 打印数组
fmt.Println("数组:", arr)
}
在这个例子中,我们定义了一个长度为 5 的整数数组 arr
,并为其每个元素赋值。最后,我们使用 fmt.Println
打印整个数组。
1.1.2 数组的长度
数组的长度是固定的,可以通过内置的 len()
函数获取数组的长度。例如:
package main
import "fmt"
func main() {
arr := [5]int{
1, 2, 3, 4, 5}
length := len(arr)
fmt.Println("数组长度:", length)
}
在这个例子中,len(arr)
返回数组的长度 5。
1.1.3 多维数组
Go 语言支持多维数组,最常见的是二维数组。你可以通过嵌套方括号来定义多维数组。例如,定义一个 3x3 的二维整数数组:
package main
import "fmt"
func main() {
// 定义一个 3x3 的二维数组
matrix := [3][3]int{
{
1, 2, 3},
{
4, 5