《Go语言实战》读书笔记之Golang的数组

声明和初始化:

声明数组时需要指定内部存储的数据的类型,以及需要存储的元素的数量,这个数量也称为数组的长度


//声明一个包含5个元素的整型数组
var array [5]int

一旦声明,数组里存储的数据类型和数组长度就都不能改变了。如果需要存储更多的元素,就需要先创建一个更长的数组,再把原来数组里的值复制到新数组里。


//用具体值初始化每个元素
array := [5]int{10, 20, 30, 40, 50}

//用具体值初始化每个元素,容量由初始化的数量决定
array: = [...]int{10, 20, 30, 40, 50}

//用具体值初始化索引为1和2的元素,其余元素保持零值
array := [5]int{1: 10, 2: 20}

使用数组:


//访问数组某个单独元素,使用[]运算符
//修改索引为2的元素的值
array[2] = 35

可以声明一个所有元素都是指针的数组。使用*就可以访问元素指针所指向的值


//用整型指针初始化索引为0和1的数组元素
array := [5]*int{0: new(int), 1: new(int)}

//为索引为0和1的元素赋值
*array[0] = 10
*array[1] = 20

在Go语言里,数组是一个值。这意味着数组可以用在赋值操作中。变量名代表整个数组,因此,同样类型的数组可以赋值给另一个数组
注1:只有数组长度和每个元素类型相同的数组才能相互赋值
注2:复制数组指针,只会复制指针的值,而不会复制指针所指向的值,也就是说,复制的数组中元素指针指向的还是原来的值


var array1 [5]string 
array2 := [5]string{"Red", "Blue", "Green"}
//把array2的值复制到array1
array1 = array2

多维数组:

数组本身只有一个维度,不过可以组合多个数组创建多维数组


//声明一个二维整型数组 
var array [4][2]int
//使用数组字面量声明并初始化一个二维整型数组
array := [4][2]int{{10, 11}, {20, 21}, {30, 31}, {40, 41}}

在函数建传递数组:

使用数组指针传入函数,只需要在栈上分配8字节内存,性能更好。
注:不过由于传递的是指针,如果改变指针指向的值,会改变共享内存。


//分配一个需要8MB的数组
var array [1e6]int 

//将数组的指针传递给函数foo
foo(&array)

func foo(array *[1e6]int) {
       ....
}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值