开发者学堂课程【GO 语言核心编程-基础语法、数组、切片、Map:使用切片的区别分析】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/625/detail/9637
使用切片的区别分析
一、切片的使用
方式一和方式二的区别(面试时会作为一个考点来考察,就用方式一和方式二来回答):
方式1是直接引用数组,这个数组是事先存在的,程序员是可见的。
(类似于下图:
实际上,切片里有三个部分,其中第一个部分指向了引用数组的第几个元素的地址,后面的是长度和 cap,这是第一种方式的切片的内存图
方式2是通过 make 来创建切片,make 也会创建一个数组(make 本身它就是创建一个数组),是由切片在底层进行维护(这个数组没有名称),程序员是看不见的。make 创建切片的示意图:
(它 make 一个 int 这样的切片,4是它的 len,我们可以看到它仍然有一个地址、长度和 cap,这时它的 len 和 cap 是一样的,指针指向第一个元素(图中错误),但是想要通过数组将地址打出来只能通过 slice 来取,图中第二排对应一个[4]int 的数组,然后切片的第一个部分就指向它内部创建的这个数组的第一个元素的地址;如果要访问 make 出来的数组里面的元素,只能通过 slice 来切片)