假设我们有这样的切片
b:= make([]int, 0, 5) // length: 0, cap: 5
由"b"切片制成的"c"切片
c:= b[:2] // length: 2 (?), cap: 5
我们为什么要为"c"长度为2的问题?我也期待长度为零,就像b一样,因为我们用b表示c
是的,切片可以让你访问超出len
原始切片的元素(虽然不超出它cap
,或谁知道你要访问的内存).
这意味着,例如,您可以实现append
类似功能,返回"增长"切片,len
增加到更接近的位置cap
.也就是说,append
访问之间的区域len
并且cap
不仅可用于内置函数; 你也拥有它.看看Append:关于切片的Go博客条目中的一个示例,看它已经完成(如果有兴趣阅读整个帖子;它有助于使整个切片有意义).
切片表达式(和切片类型)和切片技巧页面上的规范也可能很有趣.