go 切片表达式介绍
golang的切片表达式,分为简单的切片表达式和完整的切片表达式,我们代码里常用的是简单的切片表达式。接下来分别介绍这两种表达式的用法。
简单的切片表达式常见格式为:
// 简单切片表达式的low和high都可以省略
slice[low:high] // 获取索引从low开始high个元素
slice[low:]// 获取索引从low开始到结束的所有元素
slice[:high] // 获取索引从0开始high个元素
slice[:] // 获取切片内所有元素
numbers := [5]int{1, 2, 3, 4, 5}
n := numbers[1:3]
fmt.Println(n) // [2, 3]
这里n的长度为 high-low,其中low和high类型必须是数字,low<=high,high<=len(slice),不可以是负数。如果给定的low或者high不正确,会引发panic。
完整的切片表达式格式为:
slice[low:high:max] // 获取索引从low开始high个元素,并且将新的前片cap设置为max-low,并且内存会重新分配,不会和slice共享内存。
numbers := [10]int{0,1,2,3,4,5,6,7,8,9}
s := numbers[2:4:6]
fmt.Println(s) // [2, 3]
fmt.Println(cap(s)) // 4
high<= max,max<= cap(slice)
如果是完整表达式的情况下,只有low可以省略,high,max都不可省略。