1. 数组的声明
数组的基本声明格式如下:
var arr [size]Type
例如,声明一个包含5个整数的数组:
var arr [5]int
2. 数组的初始化
2.1 在声明时初始化
在声明时可以直接初始化数组:
var arr = [5]int{1, 2, 3, 4, 5}
2.2 使用省略号让编译器推断数组长度
var arr = [...]int{1, 2, 3, 4, 5}
2.3 初始化部分元素
未初始化的元素会被设置为零值:
var arr = [5]int{1, 2}
上面的代码将数组初始化为[1, 2, 0, 0, 0]
。
3. 访问和修改数组元素
数组元素可以通过索引访问和修改,索引从0开始:
arr[0] = 10 // 设置第一个元素的值
fmt.Println(arr[0]) // 获取第一个元素的值
4. 遍历数组
4.1 使用for
循环遍历
for i := 0; i < len(arr); i++ {
fmt.Println(arr[i])
}
4.2 使用range
关键字遍历
range
返回索引和值:
for i, v := range arr {
fmt.Println(i, v)
}
如果只需要值,可以忽略索引:
for _, v := range arr {
fmt.Println(v)
}
5. 多维数组
5.1 声明多维数组
例如,声明一个2x3的二维数组:
var matrix [2][3]int
5.2 初始化多维数组
matrix := [2][3]int{
{1, 2, 3},
{4, 5, 6},
}
5.3 访问和修改多维数组元素
matrix[0][1] = 10
fmt.Println(matrix[0][1])
6. 数组作为函数参数
6.1 传递数组
传递数组时会传递副本:
func printArray(arr [5]int) {
for i, v := range arr {
fmt.Println(i, v)
}
}
调用函数时传递数组:
arr := [5]int{1, 2, 3, 4, 5}
printArray(arr)
6.2 传递数组的指针
如果希望函数修改数组,可以传递数组的指针:
func modifyArray(arr *[5]int) {
arr[0] = 100
}
调用函数时传递数组的指针:
arr := [5]int{1, 2, 3, 4, 5}
modifyArray(&arr)
fmt.Println(arr) // 输出: [100, 2, 3, 4, 5]
7. 数组的零值
数组的零值是数组的每个元素都是类型的零值。例如,整数数组的零值是所有元素为0:
var arr [5]int
fmt.Println(arr) // 输出: [0, 0, 0, 0, 0]
8. 数组的长度
数组的长度是固定的,并且是其类型的一部分。例如,[5]int
和[6]int
是不同的类型,无法相互赋值。
var arr1 [5]int
var arr2 [6]int
// arr1 = arr2 // 编译错误,类型不匹配
9. 数组比较
在Go中,相同类型和长度的数组是可以比较的:
arr1 := [5]int{1, 2, 3, 4, 5}
arr2 := [5]int{1, 2, 3, 4, 5}
fmt.Println(arr1 == arr2) // 输出: true
10. 使用数组的注意事项
- 数组的长度是固定的,一旦声明就不能更改。
- 数组是值类型,赋值和传递时会复制整个数组,而不是引用。
版权声明:如无特殊说明,文章均为本站原创,转载请注明出处
本文链接:http://example.com/subject/article/85/
许可协议:署名-非商业性使用 4.0 国际许可协议