在 Go 語言中,數組(Array)?是一種定長、同類型的集合。它在內存中是連續分布的,適合用于性能敏感的場景。
一、數組的定義
數組的基本語法如下:
var?數組名?[長度]元素類型
示例:
var?nums?[5]int?????????????//?定義一個長度為5的整型數組
var?names?[3]string?????????//?字符串數組
二、數組的初始化
1. 默認初始化
未賦值元素會被初始化為該類型的零值。
var?a?[3]int
fmt.Println(a)?//?[0?0?0]
2. 顯式初始化
b?:=?[3]int{1,?2,?3}
3. 指定索引初始化
c?:=?[5]int{1:?10,?3:?20}
fmt.Println(c)?//?[0?10?0?20?0]
4. 自動推導數組長度
d?:=?[...]int{1,?2,?3,?4}
fmt.Println(len(d))?//?4
三、數組的訪問與修改
a?:=?[3]string{"Go",?"Java",?"Python"}
fmt.Println(a[0])?//?Goa[2]?=?"Rust"
fmt.Println(a)?//?[Go?Java?Rust]
注意:訪問越界會引發?運行時 panic。
四、數組的遍歷
1. 使用?for
?循環
arr?:=?[3]int{10,?20,?30}
for?i?:=?0;?i?<?len(arr);?i++?{fmt.Println(arr[i])
}
2. 使用?for range
?循環
for?index,?value?:=?range?arr?{fmt.Printf("Index?%d?=?%d\n",?index,?value)
}
五、數組是值類型
數組在傳參或賦值時會復制整個數組,不同于指針或引用類型。
func?modify(arr?[3]int)?{arr[0]?=?100
}a?:=?[3]int{1,?2,?3}
modify(a)
fmt.Println(a)?//?[1?2?3]
如果希望函數內部修改原數組,需要使用指針或切片(slice)。
六、多維數組
Go 支持二維及多維數組。
matrix?:=?[2][3]int{{1,?2,?3},{4,?5,?6},
}
fmt.Println(matrix[1][2])?//?6
七、小結
特性 | 說明 |
定長 | 數組長度固定,不可動態變化 |
值類型 | 賦值或傳參會復制整個數組 |
零值初始化 | 沒有賦值的元素默認是零值 |
多維支持 | 可以創建二維或更多維數組 |
不常用于動態場景 | 更多使用切片(slice) |
提示:數組是理解切片的基礎,實際開發中更常使用切片(slice)來處理動態集合。