4.2 切片的概念
一、(Slice)切片
切片的简单定义
arr := [...]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9} s := arr[2:6]备注:这里的s就是切片,值为[2 3 4 5]
切片的[2:6]表示半开半闭区间,包括2,不包括6
举例:
arr := [...]int{0, 1, 2, 3, 4, 5, 6, 7, 8, 9} s := arr[2:6] fmt.Println("arr[2:6] = ", s) fmt.Println("arr[:6] = ", arr[:6]) fmt.Println("arr[2:] = ", arr[2:]) fmt.Println("arr[:] = ", arr[:])备注:
arr[:6]:表示从头开始,取到第6位,前开后闭原则,结果:[0 1 2 3 4 5]
arr[2:]:表示从第2位开始,取到最后一位,前开后闭原则,结果:[2 3 4 5 6 7 8 9]
arr[:]:表示查询全部
切片内部数据结构类似视图,表示要展示的内容有哪些
如果函数定义时候使用数组,不填写数字,那么表示传的是切片
func updateSlice(s []int) { s[0] = 100 }备注:直接会把原数组对应的内容改变
如果传入的内容是
arr[2:],则原始数组会改变成:{0, 1, 100, 3, 4, 5, 6, 7, 8, 9}
二、Slice的扩展
如果切片设置如下:
备注:结果:s1=[2 3 4 5]; s2=[5 6]
上面案例原因:

Slice是可以扩展的
Slice的实现

Slice是可以向后扩展,不可以向前扩展
切片后,读取的内容不可以超越值得下标,但再对其进行切片,向后扩展不可以超越底层数组的cap(s)
通过代码获取切片的内容长度,cap长度
Last updated
Was this helpful?