Java转Go语言-5

The way go to go第七章总结

数组与切片

  1. 针对容器
  2. 切片是建立在Go语言数组类型之上的抽象

声明和初始化

  1. 数组长度最大是2Gb
  2. Go中数组是一种值类型,换句话说当数组作为参数传递给函数的时候,会发生拷贝现象(与C不同的地方),想要修改的话,利用&,或者生成数组切片。
  3. 可以取任意数组常量的地址来作为指向新实例的指针

切片

  1. 切片是一个长度可变的数组
  2. 切片是引用(类似于C中的数组类型,java中的数组同样属于引用)
  3. 注意new和make之间的区别:
    new函数分配内存;返回指针,获取内存地址。
    make函数初始化;返回初始值
  4. slice、map以及channel都是golang内建的一种引用类型,三者在内存中存在多个组成部分, 需要对内存组成部分初始化后才能使用,而make就是对三者进行初始化的一种操作方式

For-range结构

  1. for-range循环不能修改值(因为只是一个拷贝),注意为什么多维那个可以修改,分清range的是那个值!

切片重组
切片可以反复扩展直到占据整个相关数组,也可以重新分片。

切片的复制和追加

  1. 注意一点就是,容量不足以储存新增元素了,会分配一个新的切片来保证这一点,但是返回的切片可能已经指向一个不相同的相关数组了。所以append永远都是成功的,除非内存耗尽。

字符串,数组和切片的应用

  1. Go中字符串是不可以改变的,要转成字节数组,然后再通过修改,之后转成字符串格式。
  2. 字符串是一个双字结构,有指针,但是可以看成一个值类型(字符串数组)。但是涉及修改就不能看成值类型。
  3. 切片的垃圾回收:切片大小可能会远远小于数组,但是底层的数组回收是要求没有任何切片指向它。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值