Go 切片中的长度和容量

假设我们有这样的切片

b:= make([]int, 0, 5) // length: 0, cap: 5

和由“b”切片制成的“c”切片

c:= b[:2]  // length: 2 (?), cap: 5

问题是为什么我们的“c”长度为 2?我也期待长度为零,就像 b,因为我们正在用 b 制作 c


大话西游666
浏览 188回答 1
1回答

守着一只汪

是的,切片可以让您访问len原始切片之外的元素(尽管不能超出其cap,或者谁知道您将访问什么内存)。这意味着,例如,您可以实现append类似功能,返回一个“增长”的切片,len增加到更接近cap. 也就是说,append的获得之间的区域len并cap不仅适用于内置的功能; 你也有。查看Append:关于切片的 Go 博客条目中的示例以查看它已完成(如果有兴趣阅读整篇文章;它有助于使切片作为一个整体有意义)。关于切片表达式(和切片类型)的规范和切片技巧页面也可能很有趣。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go