引言
数组是 Go 语言中最基础的数据结构之一,用于存储固定大小的相同类型的元素集合。数组的大小在定义时确定,并且在运行时不能改变。
1. 数组声明
- 基本语法:
- 使用 [ ] 后跟类型和长度来声明数组。
- 示例:var arr [5]int
- 初始化数组:
- 可以在声明时初始化数组。
- 示例:arr := [5]int{1, 2, 3, 4, 5}
- 省略长度:
- 如果在初始化时提供了元素,可以省略长度,编译器会根据元素数量推断长度。
- 示例:arr := [...]int{1, 2, 3, 4, 5}
2. 访问数组元素
- 使用索引:
- 数组元素可以通过索引访问,索引从 0 开始。
- 示例:fmt.Println(arr[0]) // 输出 1
- 越界检查:
- 访问超出数组范围的索引会导致运行时错误。
- 示例:
- fmt.Println(arr[5]) // 运行时错误:index out of range
3. 遍历数组
- 使用 for 循环:
- 可以使用 for 循环遍历数组。
- 示例:
for i := 0; i < len(arr); i++ {
fmt.Println(arr[i])
}
- 使用 for-range:
- 更简洁的方式是使用 for-range 循环。
- 示例:
for index, value := range arr {
fmt.Println(index, value)
}
4. 数组作为函数参数
- 传递数组:
- 函数可以接受数组作为参数。
- 示例:
func printArray(a [5]int) {
for _, v := range a {
fmt.Println(v)
}
}
- 传递数组切片:
- 通常,使用数组切片(slice)作为参数,因为它提供了更灵活的长度和容量。
- 示例:
func printSlice(s []int) {
for _, v := range s {
fmt.Println(v)
}
}
5. 示例代码
package main
import (
"fmt"
)
func main() {
// 声明并初始化数组
arr := [5]int{1, 2, 3, 4, 5}
// 访问数组元素
fmt.Println(arr[0]) // 输出 1
// 遍历数组
for i := 0; i < len(arr); i++ {
fmt.Println(arr[i])
}
// 使用 for-range 遍历
for index, value := range arr {
fmt.Println(index, value)
}
// 作为函数参数
printArray(arr)
// 传递数组切片
slice := arr[1:4] // 创建切片
printSlice(slice)
}
func printArray(a [5]int) {
for _, v := range a {
fmt.Println(v)
}
}
func printSlice(s []int) {
for _, v := range s {
fmt.Println(v)
}
}