
数组是固定长度的序列。长度是类型的一部分,[5]int 和 [10]int 是完全不同的两种东西,不能混用!


var a [5]int // 定义一个能装5个整数的数组,默认都是0
a[0] = 9527 // 第一个位置坐9527
a[1] = 9528
花式初始化:
// 1. 指定所有元素
b := [3]string{"秋香", "冬香", "石榴姐"}
// 2. 让编译器数数 (...)
c := [...]int{1, 2, 3, 4, 5, 6, 7}
fmt.Println(len(c)) // 输出 7
// 3. 指定特定索引的值
d := [5]int{1: 10, 3: 20} // 索引1是10,索引3是20,其他是0
// [0 10 0 20 0]
在 Go 语言中,数组是值类型。这意味着当你把数组赋值给另一个变量,或者传给函数时,会完整拷贝一份。

func change(arr [3]int) {
arr[0] = 888 // 这里的 arr 只是个副本
fmt.Println("函数里:", arr) // [888 2 3]
}
func main() {
a := [3]int{1, 2, 3}
change(a)
fmt.Println("函数外:", a) // [1 2 3] -> 没变!
}
数组里还可以装数组,这就是多维数组。
// 2行3列的二维数组
var grid [2][3]int
grid[0][1] = 5
// [[0 5 0] [0 0 0]]
创建一个长度为 3 的整数数组,分别存入 1, 2, 3。
package main
import "fmt"
func main() {
// 填空:定义并初始化数组
var arr ______ = [3]int{1, 2, 3}
fmt.Println(arr)
}
任务: 变量类型应该写什么?
答案: [3]int
注意:长度 3 必须写在括号里。