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

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

开发者学堂课程【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 来切片)

相关文章
|
9月前
|
Go 索引
Go语言中的数组、切片和映射解析
Go语言中的数组、切片和映射解析
|
1月前
|
Go C++ 容器
【Go语言快速上手(三)】数组, 切片与映射
【Go语言快速上手(三)】数组, 切片与映射
|
1月前
|
存储 传感器 机器学习/深度学习
Java数组全套深入探究——进阶知识阶段6、三维数组以及更多维度数组的概念和用法
Java数组全套深入探究——进阶知识阶段6、三维数组以及更多维度数组的概念和用法
69 0
|
1月前
|
存储 编译器 Serverless
go语言第四章(数组和切片)
go语言第四章(数组和切片)
45 0
|
8月前
|
Go 索引
终于学会使用Go语言切片 切片操作看这里就够了
终于学会使用Go语言切片 切片操作看这里就够了
40 1
终于学会使用Go语言切片 切片操作看这里就够了
|
9月前
|
存储 索引 Python
Python列表操作指南:索引、切片、遍历与综合应用
Python列表操作指南:索引、切片、遍历与综合应用
177 0
|
算法
切片用法——去空格
切片用法——去空格
35 0
|
前端开发
前端学习案例3-数组的删改方法1slice
前端学习案例3-数组的删改方法1slice
58 0
前端学习案例3-数组的删改方法1slice
|
Python
numpy重新学习系列(3)---如何创建一个array-四种从其他形式转化成array的方法
numpy重新学习系列(3)---如何创建一个array-四种从其他形式转化成array的方法
113 0
|
程序员 Go 开发者
使用切片的三种方式|学习笔记
快速学习使用切片的三种方式。
142 0
使用切片的三种方式|学习笔记