使用切片的区别分析|学习笔记

简介: 快速学习使用切片的区别分析。

开发者学堂课程【GO 语言核心编程-基础语法、数组、切片、Map:使用切片的区别分析学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/625/detail/9637


使用切片的区别分析

 

一、切片的使用

方式一和方式二的区别(面试时会作为一个考点来考察,就用方式一和方式二来回答):

方式1是直接引用数组,这个数组是事先存在的,程序员是可见的。

(类似于下图:

image.png

实际上,切片里有三个部分,其中第一个部分指向了引用数组的第几个元素的地址,后面的是长度和 cap,这是第一种方式的切片的内存图

方式2是通过 make 来创建切片,make 也会创建一个数组(make 本身它就是创建一个数组),是由切片在底层进行维护(这个数组没有名称),程序员是看不见的。make 创建切片的示意图:

image.png

(它 make 一个 int 这样的切片,4是它的 len,我们可以看到它仍然有一个地址、长度和 cap,这时它的 len 和 cap 是一样的,指针指向第一个元素(图中错误),但是想要通过数组将地址打出来只能通过 slice 来取,图中第二排对应一个[4]int 的数组,然后切片的第一个部分就指向它内部创建的这个数组的第一个元素的地址;如果要访问 make 出来的数组里面的元素,只能通过 slice 来切片)

相关文章
Go语言中的数组、切片和映射解析
Go语言中的数组、切片和映射解析
|
6月前
|
存储 算法 Java
Java数据结构与算法:用于高效地存储和检索字符串数据集
Java数据结构与算法:用于高效地存储和检索字符串数据集
|
7月前
|
Go C++ 容器
【Go语言快速上手(三)】数组, 切片与映射
【Go语言快速上手(三)】数组, 切片与映射
|
7月前
第六章 利用数组处理批量数据
第六章 利用数组处理批量数据
37 0
|
Go 索引
终于学会使用Go语言切片 切片操作看这里就够了
终于学会使用Go语言切片 切片操作看这里就够了
66 1
终于学会使用Go语言切片 切片操作看这里就够了
|
存储 索引 Python
Python列表操作指南:索引、切片、遍历与综合应用
Python列表操作指南:索引、切片、遍历与综合应用
304 0
数据结构 --- 超全的排序总结--八大排序,动态图,代码
数据结构 --- 超全的排序总结--八大排序,动态图,代码
107 0
数据结构 --- 超全的排序总结--八大排序,动态图,代码
|
Java
如何用JAVA实现二维数组向稀疏数组的转换
如何用JAVA实现二维数组向稀疏数组的转换,学习!
99 1
如何用JAVA实现二维数组向稀疏数组的转换
|
程序员 Go 开发者
使用切片的三种方式|学习笔记
快速学习使用切片的三种方式。
184 0
使用切片的三种方式|学习笔记
|
Go 开发者
切片注意事项和细节(1) | 学习笔记
简介:快速学习切片注意事项和细节(1)
134 0
切片注意事项和细节(1) | 学习笔记
下一篇
DataWorks