list := []int{1}
fmt.Println(list)
fmt.Println(list[1:])
fmt.Println(list[1])
对于长度为1的切片, 取下标为1的元素会报错, 但为什么第3行能正常运行呢?
fmt.Println(list[1:]) 这个不好理解? 那如果list = make([]int,0,0) list=list[0:],这样写好理解了么。类比
#8
更多评论
切片的数据结构有两个属性,len(长度)和cap(容量) 只要开始索引和结束索引不大于cap就不会出现异常,你这个例子里的len(list)==1,cap(list)==1,所以fmt.Println(list[1:])不会出异常
#1
1楼 <a href="/user/18601400252" title="@18601400252">@18601400252</a> 谢谢回复, 但是你是否验证过你的说法呢?
```
list := make([]int, 10, 20)
fmt.Println("len:", len(list))
fmt.Println("cap:", cap(list))
fmt.Println(list)
fmt.Println(list[11:])
```
最后一行切片的开始索引并没有超过20,但还是出错了?
#2