关于切片的一个问题

progyoung · · 1165 次点击
https://golang.google.cn/ref/spec#Slice_expressions 里写了,`For arrays or strings, the indices are in range if 0 <= low <= high <= len(a), otherwise they are out of range. For slices, the upper index bound is the slice capacity cap(a) rather than the length.` 所以上面回答说不超过cap是错的,应该不超过len `a[low : high]`满足 `0 <= low <= high <= len(a)`即可,但是对于slice,`high<=cap(a)`。
#5
更多评论
切片的数据结构有两个属性,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(&#34;len:&#34;, len(list)) fmt.Println(&#34;cap:&#34;, cap(list)) fmt.Println(list) fmt.Println(list[11:]) ``` 最后一行切片的开始索引并没有超过20,但还是出错了?
#2