3.1 数组

本篇学习 Go 数组的定义、索引与遍历,并能完成定长数组的初始化、修改和读取。

字数 638 字

数组

概念说明

数组(Array)是长度固定、元素类型相同的序列。
在 Go 中,数组长度也是类型的一部分,例如 [3]int[4]int 是不同类型。
数组适合存放“数量固定、类型一致”的数据。

语法/规则

  1. 声明数组时必须确定长度,可以显式写长度,也可以使用 ... 自动推导长度。
  2. 数组索引从 0 开始,最大索引是 len(array)-1
  3. 数组元素可以通过索引读取和修改。
  4. 数组支持 forfor range 遍历。
  5. 未显式赋值的元素会使用对应类型的零值。

定义与索引修改示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
package main

import "fmt"

func main() {
	arr1 := [3]int{1, 2, 3}
	arr2 := [3]int{1, 2, 3}
	arr3 := [...]string{"Go", "数组", "入门"}

	arr1[0] = 10

	fmt.Println(arr1)
	fmt.Println(arr2)
	fmt.Println(arr3)
}

输出结果:

1
2
3
[10 2 3]
[1 2 3]
[Go 数组 入门]

索引与遍历示例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
package main

import "fmt"

func main() {
	letters := [4]string{"a", "b", "c", "d"}

	fmt.Println(letters[1])              // 第二个元素
	fmt.Println(letters[len(letters)-2]) // 倒数第二个元素

	for i, v := range letters {
		fmt.Printf("index=%d value=%s\n", i, v)
	}
}

输出结果:

1
2
3
4
5
6
b
c
index=0 value=a
index=1 value=b
index=2 value=c
index=3 value=d

range 解析

for i, v := range letters 里,range 会按顺序遍历 letters

  1. i 表示当前元素的索引(从 0 开始)。
  2. v 表示当前索引对应的元素值。

这种写法比手动控制索引边界更直观,也更不容易写错。

如果你想进一步了解 range 在字符串、map、channel 上的行为,可以查看 range 详解

常见错误

  1. 使用越界索引(例如 letters[4]),会触发 index out of range
  2. 把不同长度的数组当作同一类型使用(如 [3]int 赋值给 [4]int)会编译失败。
  3. 误以为 Go 支持负索引(如 letters[-1]),Go 不支持这种写法。
  4. 把数组当切片使用 append,会编译报错,append 只作用于切片。
使用 Hugo 构建
主题 StackJimmy 设计 由 Hobin 魔改
载入天数...载入时分秒...
发表了 0 篇文章 · 发表了 31 篇笔记 · 总计 1 万 6 千字(其中笔记 16551 字)