数组
固定长度 [N]T、值类型数组(赋值即拷贝)、... 自动推断长度
数组
Go 的数组是固定长度的值类型——赋值时复制整个数组,而不是共享引用。
学完本章你将: 掌握 [N]T 声明、值类型特性、... 自动推断长度。
数组声明
go
package main
import "fmt"
func main() {
// 指定长度
var arr1 [5]int // [0 0 0 0 0]
arr2 := [5]int{1, 2, 3, 4, 5} // [1 2 3 4 5]
arr3 := [...]int{1, 2, 3} // 自动推断长度 [3]int
// 指定索引初始化
arr4 := [5]int{0: 10, 4: 50} // [10 0 0 0 50]
fmt.Println(arr2[0]) // 1
fmt.Println(len(arr3)) // 3
}
值类型——数组赋值是拷贝
go
a := [3]int{1, 2, 3}
b := a // 完整拷贝(值类型!)
b[0] = 999
fmt.Println(a) // [1 2 3] —— a 没变!
fmt.Println(b) // [999 2 3]
// ⚠️ 和 Java/C# 不同——那里数组是引用类型
数组作为参数
go
// ❌ 每次调用都会拷贝整个数组(开销大)
func process(arr [100]int) { }
// ✅ 通常用切片代替(不拷贝数据)
func process(arr []int) { }
💡 实际开发中基本不用数组——用 切片(Slice)。数组只用作底层存储。