定义数组:

    1. var arr1 [5]int
    2. arr2 := [3]int{1, 3, 5}
    3. arr3 := [...]int{2, 4, 6, 8, 10}
    4. // 二维数组
    5. var grid [4][5]int
    6. fmt.Println(arr1, arr2, arr3)
    7. // [0 0 0 0 0] [1 3 5] [2 4 6 8 10]
    8. fmt.Println(grid)
    9. // [[0 0 0 0 0] [0 0 0 0 0] [0 0 0 0 0] [0 0 0 0 0]]

    遍历数组:

    // 遍历方法1 不常用
    numbers := [6]int{1,3,2,5,8,4}
    for i := 0; i < len(numbers); i++ {
        fmt.Println(numbers[i])
    }
    
    // 遍历方法2 常用
    for i := range arr3 {
        fmt.Println(arr3[i])
    }
    
    for i, v := range arr3 {
        fmt.Println(i, v)
    }
    
    for _, v := range arr3 {
        fmt.Println(v)
    }
    

    数组是值类型,当将数组作为参数传入函数时,由于go语言的值传递机制,会对数组进行拷贝:

    func printArray(arr [5]int) { 
        // 在将数组作为参数时,一定要指明其长度
        // 因为数组长度不同就是不同的类型,如[10]int和[20]int是不同的类型
        arr[0] = 100
        for i, v := range arr {
            fmt.Println(i, v)
        }
    }
    
    func main() {
        printArray(arr1)
        printArray(arr3)
        fmt.Println(arr1, arr3)
    }
    

    可以借助指针来达到引用传递的功能,即在函数内修改参数数组,但一般不这么做:

    func printArray(arr *[5]int) { 
        // 在将数组作为参数时,一定要指明其长度。因为数组长度不同就是不同的类型,如[10]int和[20]int是不同的类型
        arr[0] = 100
        for i, v := range arr {
            fmt.Println(i, v)
        }
    }
    
    func main() {
        printArray(&arr1)
        printArray(&arr3)
        fmt.Println(arr1, arr3)
    }
    

    在go语言中一般不直接使用数组,而是使用切片。