【问题标题】:length and capacity in Go slicesGo 切片中的长度和容量
【发布时间】:2015-12-22 19:36:43
【问题描述】:

假设我们有这样的 b 切片

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

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

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

为什么我们的“c”长度为 2?我也期望长度为零,比如 b,因为我们是用 b 制作 c

【问题讨论】:

    标签: arrays go slice


    【解决方案1】:

    是的,切片可以让您访问原始切片的len 之外的元素(尽管不能超过其cap,或者谁知道您将访问什么内存)。

    这意味着,例如,您可以实现类似append 的功能,返回一个“增长”的切片,其中len 增加到更接近cap。也就是说,appendlencap 之间区域的访问不仅对内置函数可用;你也有。查看有关切片的 Go 博客条目中的 Append: an example 以查看它是否完成(如果有兴趣阅读整篇文章;它有助于使切片作为一个整体有意义)。

    The spec on slice expressions(和slice types)和Slice Tricks page 也可能很有趣。

    【讨论】:

      猜你喜欢
      • 2016-08-09
      • 2015-02-23
      • 2016-02-24
      • 2015-10-19
      • 2018-02-15
      • 1970-01-01
      • 1970-01-01
      • 2015-05-26
      • 1970-01-01
      相关资源
      最近更新 更多