数组:定长集合
数组字面量、索引与长度
数组:定长集合 是 CoddyKit 上的免费 Go Academy 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Go Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Go Academy 课程共包含 4 节课。
什么是数组?
Go 中的数组是由相同类型元素组成的定长序列。长度是类型的一部分:[3]int 和 [4]int 是不同的类型。
- 数组是值类型——赋值时会复制整个数组
- 长度在编译时始终是已知的
- 通常不会直接使用;大多数任务更适合使用切片
数组字面量
使用字面量声明并初始化数组:
package main
func main() {
primes := [5]int{2, 3, 5, 7, 11}
names := [3]string{"Alice", "Bob", "Carol"}
flags := [4]bool{true, false, true, false}
_ = primes; _ = names; _ = flags
}数组长度与索引
使用 len() 获取长度,并使用从零开始的索引读取或写入元素:
package main
import "fmt"
func main() {
scores := [3]int{90, 85, 92}
fmt.Println(len(scores)) // 3
fmt.Println(scores[0]) // 90
scores[1] = 100
fmt.Println(scores) // [90 100 92]
}数组字面量中的省略号
使用 [...] 让编译器为您计算元素数量:
package main
import "fmt"
func main() {
days := [...]string{"Mon","Tue","Wed","Thu","Fri"}
fmt.Println(len(days)) // 5
}数组是值类型
赋值或传递数组时,Go 会复制整个数组。修改副本不会影响原数组:
package main
import "fmt"
func main() {
a := [3]int{1, 2, 3}
b := a // full copy
b[0] = 99
fmt.Println(a) // [1 2 3] — unchanged
fmt.Println(b) // [99 2 3]
}比较数组
类型和长度相同的数组可以使用 == 和 != 进行比较:
package main
import "fmt"
func main() {
x := [3]int{1, 2, 3}
y := [3]int{1, 2, 3}
z := [3]int{1, 2, 4}
fmt.Println(x == y) // true
fmt.Println(x == z) // false
}二维数组
可以嵌套数组来构成网格或矩阵:
package main
import "fmt"
func main() {
grid := [2][3]int{
{1, 2, 3},
{4, 5, 6},
}
fmt.Println(grid[1][2]) // 6
}遍历数组
使用传统的 for 循环或 range 进行遍历:
package main
import "fmt"
func main() {
nums := [4]int{10, 20, 30, 40}
for i, v := range nums {
fmt.Printf("[%d] = %d\n", i, v)
}
}数组与切片
主要区别如下:
- 数组:大小固定,是值类型,大小属于类型的一部分
- 切片:大小可变,是引用类型,由数组提供底层存储
- 在实际开发中,除非需要固定的编译时大小,否则请使用切片(例如 SHA-256 哈希的
[32]byte)
常见陷阱
请注意以下问题:
- 索引超出范围——如果
i >= len(arr),Go 会在运行时触发 panic - 向函数传递大型数组会产生开销很高的复制操作——请改用指针或切片
- 请牢记
[3]int和[4]int是不兼容的类型
快速检查
[...]string{"a","b","c"} 的长度是多少?
回顾:数组
要点:
- 数组具有固定的编译时长度,并且长度是类型的一部分
- 数组是值类型——赋值时会复制所有元素
- 使用
len()和从零开始的索引 - 大多数集合操作优先使用切片
练习提示
请声明一个包含 5 个整数的数组,将值 100 赋给第三个元素,然后使用 range 打印数组。
常见问题解答
「数组:定长集合」课时是免费的吗?
是的 — 「数组:定长集合」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Go Academy 课程的其余内容,请升级到 CoddyKit PRO。 Go Academy 课程共包含 4 节课。
「数组:定长集合」这节课中我会学到什么?
数组字面量、索引与长度 你通过在浏览器中直接运行的动手代码来练习 Go Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。
学习 Go Academy 需要有经验吗?
无需任何先前经验。CoddyKit 上的 Go Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。
「数组:定长集合」课时需要多长时间?
大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。
我能在这节 Go Academy 课中编写并运行代码吗?
能。每节 Go Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。
此课程中的所有课时
- 数组:定长集合
- 切片:动态列表
- 映射:键值存储
- 使用 range 遍历集合