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将自动用零填充其余部分。这就像有一个5天的计划表,你只计划了前三天。

方法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方法。对于更动态的操作,你通常会使用slice,我们将在未来的课程中介绍!

结束语

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

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

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

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

Credits: Image by storyset