Java转Go语言 -6

The way go to go 第八章总结

之前一章总结了数组和切片。但是没有深度思考,就比如说为什么Go中数组被设计成值而不是设计成引用?像这样的问题。
思考了一下,array固定长度,一旦被初始化分配好了,就固定占用那么多内存空间,是连续的,不能缩短或者加长。
但是slice不一样,他实现了动态伸缩数组的需求。
可以这样说,array用于底层设计,我们平时使用就使用slice就可以了(同时Go语言也一直按时“不要使用array”)

Map
概念
申明,初始化和make

  1. map是引用类型 内存用make方法来分配
  2. 与线性查找和切片 读取数据的时候 要考虑一下性能问题
  3. 永远不要用new,这个相当于分配了一个引用对象,会获得一个空引用的指针,相当于申明了一个未初始化的变量并且取了它的地址。
  4. map会在内存不够的时候,快速扩张,性能很受影响

总结(new和make的区别)*
Go中的new和make都是用来分配空间的
new:最主要的一点事,它仅仅是是分配空间。输入一个类型, 返回值是指向新分配的零值的指针。
make:为slice或者map或者chan 分配并且初始化。输入时类型和长度,返回值是一个类型

测试键值对是否存在及删除元素
监测是否存在的时候,注意可以返回两个值,其中一个是用来监测是否存在的。

for-range的配套用法
只需要注意map不是按照key的顺序排列的,也不是按照value的顺序排列的。

map类型的切片

  1. 注意需要使用两次make()函数,第一次分配切片,第二次分配切片中的每个map元素。
  2. 注意range循环中,哪项是copy值的(也就是不能修改值的) range的那个!

map的排序
map是没有次序的,所以想要排序只能把key或者value拷贝到一个切片上,再对切片排序。

将map的键值对调

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值