Golang数组学习

1. 数组的长度也是数组类型的一部分,即定义了不同长度的数组,类型是不一样的;

2. 当把一个数组赋值给另一个时,需要在做一次数组内存的拷贝操作,即修改赋值后的数组的元素值,不会影响被拷贝的数组,将数组作为函数参数传递时也不会改变;想要改变原数组,可以使用引用&;这样可以避免数组拷贝,当数组很巨大的时候,这种操作方式的效率是很高的

3. 格式:

var arrAge = [5]int{18, 20, 15, 22, 16}
var arrLazy = [...]int{5, 6, 7, 8, 22}
var arrKeyValue = [5]string{3: "Chris", 4: "Ron"}

4. 切片(slice)是对数组一个连续片段的引用,不需要使用额外的内存并且比使用数组更有效率,实际上格式中的第二种本质上是一个切片,式子表示创建了一个数组并给了切片arrLazy引用;也可以说是创建了arrLazy的切片;另外,切片不能再重新切片;

5. 使用make创建一个切片var slice1 []type = make([]type, len),也可以使用make的可选参数cap来定义切片的len的一部分长度

var slice1 []type = make([]type, len, cap),如slice := make([]int, 20, 50),可以被解释为创建了一个包含50个int类型数的数组并将其中的前20个的切片给了slice;

6. 使用new生成切片;new([50]int),当然也可以选择切片长度:new([50]int)[0:20];

new与make的区别:new和make都在堆上分配内存;new返回T类型的指针,并将申请的区域初始化为0,make返回一个已经初始化为0的初始值(如slice,map,channel)

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值