数组长度在定义后就不可更改,在声明时长度可以为一个常量或者一个常量表达式

    1. [32]byte // 长度为32的数组,每个元素为一个字节
    2. [2*N] struct { x, y int32 } // 复杂类型数组
    3. [1000]*float64 // 指针数组
    4. [3][5]int // 3行5列的二维整型数组,总共可以存放15个整型元素
    5. [2][2][2]float64 // 等同于[2]([2]([2]float64))
    1. for i := 0; i < len(array); i++ {
    2. fmt.Println("Element", i, "of array is", array[i])
    3. }
    4. for i, v := range array {
    5. fmt.Println("Array element[", i, "]=", v)
    6. }

    在Go语言中数组是一个值类型(value type)。所有的值类型变量在 赋值 和 作为参数传递 时都将产生一次复制动作(值传递, 而不是引用传递)
    如果将数组作为函数的参数类型,则在函数调用时该参数将发生数据复制. 因此,在函数体中无法修改传入的数组的内容,因为函数内操作的只是所传入数组的一个副本。

    1. package main
    2. import (
    3. "fmt"
    4. )
    5. func modify(array [5]int){
    6. array[0] = 10
    7. fmt.Println("In modify, array:", array)
    8. }
    9. func main() {
    10. array := [5] int {1,2,3,4,5}
    11. modify(array)
    12. fmt.Println("In main, array:", array)
    13. }

    In modify, array: [10 2 3 4 5] In main, array: [1 2 3 4 5]