Go 语言 - 数组:初学者的全面指南

你好,有抱负的 Go 语言程序员们!我很高兴带你们走进 Go 语言中的数组世界。作为一个教编程多年的老师,我可以向你保证,理解数组对你的编码冒险至关重要。那么,让我们开始吧!

Go - Arrays

什么是数组?

在我们开始之前,让我们想象你正在整理一个书架。你有一个固定数量的槽位,每个槽位可以放一本书。这在编程中基本上就是数组的概念 - 一个固定大小的同类型元素集合。

声明数组

在 Go 语言中,声明一个数组就像告诉计算机:“嘿,我需要一定数量的槽位来存储一些物品。”下面是如何操作的:

var bookshelf [5]string

这行代码创建了一个名为 bookshelf 的数组,可以容纳5个字符串。就像设置了一个有5个槽位的书架,每个槽位都能放一个书名。

但是等等,还有更多!我们可以声明不同类型和大小的数组:

var scores [3]int
var temperatures [7]float64
var flags [2]bool

记住,一旦你声明了一个具有特定大小的数组,这个大小就固定了。就像建造一个书架 - 一旦建好,你就不能突然添加或移除书架!

初始化数组

现在我们有了数组,让我们在书架上放一些书!有多种方法可以做到这一点:

方法1:在声明时初始化

var fruits [3]string = [3]string{"apple", "banana", "cherry"}

在这里,我们创建了一个有三个特定水果的水果碗。

方法2:简短声明

colors := [4]string{"red", "blue", "green", "yellow"}

这是一种在声明和初始化数组时简化的方法。就像快速安排一组颜料。

方法3:部分初始化

var numbers [5]int = [5]int{1, 2, 3}

在这种情况下,我们只指定了前三个数字。Go 将自动用零填充其余部分。就像有一个五天的计划,你只计划了前三天。

方法4:让 Go 推断大小

animals := [...]string{"dog", "cat", "hamster", "fish"}

通过使用 ...,我们告诉 Go:“你能帮数一下吗?”Go 将创建一个大小正好合适的数组。

访问数组元素

现在,我们如何实际使用这些数组?我们通过索引来访问元素,索引从0开始(我知道,一开始可能有点奇怪,但你会习惯的)。

fruits := [3]string{"apple", "banana", "cherry"}
fmt.Println(fruits[0]) // 输出:apple
fmt.Println(fruits[1]) // 输出:banana
fmt.Println(fruits[2]) // 输出:cherry

把它想象成这样:在一个书架上,第一本书在位置0,第二本在位置1,依此类推。

我们也可以更改元素:

fruits[1] = "blueberry"
fmt.Println(fruits) // 输出:[apple blueberry cherry]

我们刚刚把香蕉换成了蓝莓!

Go 数组详解

现在我们已经覆盖了基础知识,让我们更深入一些。

数组长度

要找出数组中有多少个元素,我们使用 len() 函数:

numbers := [4]int{2, 4, 6, 8}
fmt.Println(len(numbers)) // 输出:4

就像问:“这个书架上有多少本书?”

遍历数组

通常,我们希望对数组中的每个元素都做一些事情。我们可以使用 for 循环来做到这一点:

colors := [4]string{"red", "blue", "green", "yellow"}
for i := 0; i < len(colors); i++ {
fmt.Printf("颜色 %d 是 %s\n", i+1, colors[i])
}

这将打印:

颜色 1 是 red
颜色 2 是 blue
颜色 3 是 green
颜色 4 是 yellow

就像浏览你的书架并阅读每本书的标题。

多维数组

有时,我们需要以更复杂的方式组织数据。这时,多维数组就派上用场了!把这些想象成数组的数组:

matrix := [3][3]int{
{1, 2, 3},
{4, 5, 6},
{7, 8, 9},
}

这创建了一个3x3的网格,就像一个迷你电子表格或井字棋盘。

要访问多维数组中的元素:

fmt.Println(matrix[1][2]) // 输出:6

这访问了第二行(索引1)和第三列(索引2)中的元素。

Go 中的数组方法

下面是 Go 语言中数组的一些常见操作:

操作 描述 示例
声明 创建数组 var arr [5]int
初始化 设置初始值 arr := [3]int{1, 2, 3}
访问 获取特定元素 element := arr[2]
修改 更改元素 arr[1] = 10
长度 获取数组大小 len(arr)
遍历 循环遍历元素 for i := 0; i < len(arr); i++ { ... }
复制 创建新副本 newArr := arr

记住,与某些其他语言不同,Go 没有数组内置的 push、pop 或 slice 方法。对于更动态的操作,你通常会使用 slices,我们将在未来的课程中介绍!

总结

恭喜你!你已经迈出了进入 Go 语言数组世界的第一步。我们已经介绍了如何声明它们、初始化它们、访问它们的元素,甚至尝试了多维数组。

记住,Go 中的数组大小是固定的,这使得它们在你知道确切需要多少元素时非常适用。它们就像你房间里的那个可靠的旧书架 - 可靠、不变,总是在你需要时出现。

在你继续你的 Go 语言之旅时,你会发现数组无处不在。它们是构建更复杂数据结构的基石,对于高效的数据管理至关重要。

继续练习,保持好奇心,最重要的是,享受编码的乐趣!在下一课中,我们将探索 slices - Go 语言中数组的更灵活的亲戚。在此之前,祝你编码愉快!

Credits: Image by storyset