散记03:数组

01

一:

数组大小不可变化,数组类型由两部分组成,一是元素类型,二是长度。Go语言中不同长度的数组为不同的类型,而不是统一混为数组。对于类型区分这一点上Go语言是很严格的。

二:

在定义数组时,要考虑数组长度的适宜,而在使用时,不能把两个长度不同的数组混在一起使用,譬如在函数定义时使用A长度的数组,但传入时用的是B长度的数组。长度的限制缩小数组的适用性,所以多用切片。

02

一:

多维数组是指它的元素也是数组(且是比它更低一维的数组),所谓“维数”,实际上就是数组嵌套的层数,A数组是B数组的元素,那么B数组就是比A数组更高层的数组。二维数组就是用最基本的数组作元素的数组。但无论多么复杂的多维数组,其在底层存储上依旧是简单的“一道线”,所有的复杂都来源于逻辑意义的赋予。

二:

正如多维数组的实质是嵌套的数组,那么对多维数组中元素的获取也就成了嵌套的for循环。

03

一:

在Go语言中,数组是值类型,也就是说在函数传参时,传递是一个副本,而非数组首地址,这也就意味着,在函数中对数组作的任何改变只是会影响到副本,而不会影响要原数组。但假如数组中的元素数量过大,其副本复制的成本也是不容忽视的。

二:

对于值传递的类型,我们处理其中的数据时可以暴力一些,不用怕弄坏其中的数据,而对于地址传递的类型,我们则需要小心一些,最好先搞个副本出来。前者多用于使用其中的数据完成一些工作的场景,而后者则多用于修改其中的数据来作某种程度上的更新。对于大量元素的数组,应该考虑如何降低成本,如用指针直接传递数组地址。

04

一:

数组支持“==”和“!=”操作符,能够判断数组元素是否一一相同。

二:

利用这点,我们可以省去编写for循环和if判断的功夫,直接使用这个特性来判断两个数组的内容是否完全相同。但这个做法也有所局限,就是它只能够判断两个数组是否完全相同(除去内存地址),包括数组类型、数组元素、数组元素的顺序。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值