在学习GoLand中遇到append的问题的个人看法

首先先创建一个切片,长度为5,容量为6,默认值的话是 0 0 0 0 0

根据切片的下标0第一位修改成10,下标2第三位修改成30

此时的切片是10   0   30   0   0

 

 

 如果使用append在切片中追加2022,2021元素

输出结果如下

 我们在创建slice切片的时候指定了切片的容量为6,在使用了append追加了2个元素(原本是5个,追加后变成7个),对slice切片进行了扩容。

在Go语言的官方文档中能看到append里说道。"若它有足够的容量,其目标就会重新切片以容纳新的元素。否则,就会分配一个新的数组"

 回到例子,内存图如下,当他超过了slice切片本身一开始的容量,则会在内存中开辟一个新的数组,将值拷贝过去并添加新的元素(因为数组长度是不可改变的),所以此时slice切片会指向新的数组的地址值(如果本身所添加的元素没有超过slice切片本身,则还是指向原来数组的地址值,因为没扩容没产生新的数组)

由于进行了扩容在内存中开辟了新的数组,则slice切片本身内部结构也会随之改变。(包括地址值,长度,容量)

        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        ​​​​​​​        

 

以上就是在学习Go语言中的slice切片,遇到append的问题,对此做个记录

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值