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 国际许可协议