码迷,mamicode.com
首页 > 其他好文 > 详细

Go 切片

时间:2018-07-28 23:24:51      阅读:181      评论:0      收藏:0      [点我收藏+]

标签:长度   style   数据   如何   取数据   存在   取数   初始   获取   

切片是什么?一种数据结构,类似数组,围绕动态数组的概念而设计,可按需自动改变大小

切片内部实现?切片基于数组实现,底层是数组(故底层的内存是连续分配,可根据索引获取数据,可迭代以及垃圾回收),自身非常(切片对象只有3个字段数据结构即:指向底层数组的指针ptr、切片长度len、切片容量cap),可看作对底层数组的抽象

切片如何声明?创建方式多样,比如make、或指定初始化值或基于现有切片(数组)创建

方法一简洁如make make([]T, length, capacity) ,比如 slice := make([]int,5) 指定切片长度为5, slice:=make([]int,5,10) 指定切片长度5,容量10(对应的是切片底层数组)

注:容量为10,但长度为5,故我们只能访问5个元素,剩下的5个元素需要切片扩充后才可访问。且容量>=长度。

方法二使用自变量:指定初始化值 slice := []int{1,2,3,4,5} 

方法三基于现有切片(数组)创建, s := arr[startIndex:endIndex] //前闭后开 使用 [i:j] 操作符表示以i到j的左闭右开,类似Java的subString方法。

 

切片初始值?切片底层为数组,创建切片不指定字面值,默认为数组元素的零值。类似数组,初始化可以为:

//数组初始化  array := [5]int{4:1}
slice := []int{4:1}

 

nil切片与空切片区别?长度、容量都为0.

nil切片(比如: var nilSlice []int )指向底层数组的指针为nil,nil切片表示不存在的切片。

空切片(比如: slice := []int{} )对应的指针是个地址,空切片表示一个空集合

 

Go 切片

标签:长度   style   数据   如何   取数据   存在   取数   初始   获取   

原文地址:https://www.cnblogs.com/ycx95/p/9383721.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!