package main import ( "fmt" ) //s[low:high:max] //第一个数(low)表示下标的起点(从该位置开始截取),如果low取值为0表示从第一个元素开始截取,也就是对应的切片s中的10 //第二个数(high)表示取到哪结束,也就是下标的终点(不包含该位置),根据公式计算(len=high-low),也就是第二个数减去第一个数,差就是数据长度。在这里可以将长度理解成取出的数据的个数。 //第三个数用来计算容量,所谓容量:是指切片目前可容纳的最多元素个数。通过公式计算(cap=max-low),也就是第三个数据减去第一个数。 func main() { slice := []string{"a", "b", "c", "d", "e"} fmt.Println(slice[0:4:5]) //[a b c d] }
操作 |
含义 |
s[n] |
切片s中索引位置为n的项 |
s[:] |
从切片s的索引位置0到len(s)-1处所获得的切片 |
s[low:] |
从切片s的索引位置low到len(s)-1处所获得的切片 |
s[:high] |
从切片s的索引位置0到high处所获得的切片,len=high |
s[low:high] |
从切片s的索引位置low到high处所获得的切片,len=high-low |
s[low : high : max] |
从切片s的索引位置low到high处所获得的切片,len=high-low,cap=max-low |
len(s) |
切片s的长度,总是<=cap(s) |
cap(s) |
切片s的容量,总是>=len(s) |