go 语言 截取0长度的Slice
截取0长度的slice
func main() {
s1 := []int{1, 2, 3, 4, 5, 6}
s2 := s1[1:1]
fmt.Println(cap(s2), len(s2), s2) // 5 0 []
s2 = s1[6:6]
fmt.Println(cap(s2), len(s2), s2) // 0 0 []
s2 = s1[1:2]
fmt.Println(cap(s2), len(s2), s2) // 5 1 [2]
}
s1[1:1]
表示截取的位置从第一个元素最后一个字节的后面开始,到第一个元素最后一个字节的后面结束,所以生成的slice
的长度是0,容量是5(6-1)
s1[6:6]
表示截取的位置从最后一个元素最后一个字节的后面开始,到最后一个元素最后一个字节的后面结束,所以生成的slice
的长度是0,容量是0(6-6)
s1[1:2]
表示截取的位置从第一个元素最后一个字节的后面开始,到第二个元素最后一个字节的后面结束,在这个范围内的元素只有 2
,所以生成的slice
的长度是1,容量是5(1-6)