声明和初始化
// 声明和初始化
array := [5]int{1,2,3,4,5}
array := [...]int{1,2,3,4,5}
// 修改元素
array[1] = 3
// 遍历 for-range
for i, v := range array {
fmt.Printf("索引:%d,值:%d\n", i, v)
}
// 遍历
for i := 0; i < 5; i++ {
fmt.Printf("索引:%d,值:%d\n", i, array[i])
}
指针数组
// 创建指针数组;为索引1和3都创建内存空间;其他索引是指针的零值nil
array := [5]*int{1: new(int), 3:new(int)}
// 赋值(只可以给索引1和3赋值,因为只有它们分配了内存)
*array[1] = 1
// 赋值
array[0] =new(int)
*array[0] = 2
fmt.Println(*array[0])
函数间传递数组
在函数间传递变量时,总是以值的方式,如果变量是个数组,那么就会整个复制,并传递给函数,如果数组非常大,比如长度100多万,那么这对内存是一个很大的开销。
传递数组的指针,这样,复制的大小只是一个数组类型的指针大小。
func main() {
array := [5]int{1: 2, 3:4}
modify(&array)
fmt.Println(array)
}
func modify(a *[5]int){
a[1] =3
fmt.Println(*a)
}