数组长度在定义后就不可更改,在声明时长度可以为一个常量或者一个常量表达式
[32]byte // 长度为32的数组,每个元素为一个字节
[2*N] struct { x, y int32 } // 复杂类型数组
[1000]*float64 // 指针数组
[3][5]int // 3行5列的二维整型数组,总共可以存放15个整型元素
[2][2][2]float64 // 等同于[2]([2]([2]float64))
for i := 0; i < len(array); i++ {
fmt.Println("Element", i, "of array is", array[i])
}
for i, v := range array {
fmt.Println("Array element[", i, "]=", v)
}
在Go语言中数组是一个值类型(value type)。所有的值类型变量在 赋值 和 作为参数传递 时都将产生一次复制动作(值传递, 而不是引用传递)
如果将数组作为函数的参数类型,则在函数调用时该参数将发生数据复制. 因此,在函数体中无法修改传入的数组的内容,因为函数内操作的只是所传入数组的一个副本。
package main
import (
"fmt"
)
func modify(array [5]int){
array[0] = 10
fmt.Println("In modify, array:", array)
}
func main() {
array := [5] int {1,2,3,4,5}
modify(array)
fmt.Println("In main, array:", array)
}
In modify, array: [10 2 3 4 5] In main, array: [1 2 3 4 5]