实际上执行切片的重新分配:
a = append([]T(nil), a[:newSize]...) // Thanks to @Dijkstra for pointing out the missing ellipsis.
如果它确实将
newSize元素复制到新的内存位置,或者是否像realloc(3)一样进行实际 的
大小调整,则由编译器完全决定。您可能想调查当前的状态,如果还有改进的余地,也许会提出一个问题。
但是,这可能是微优化。性能增强的第一个来源几乎总是在于选择更好的算法和/或更好的数据结构。使用巨大的向量最终只保留一些项可能不是内存消耗的最佳选择。
编辑:以上只是部分正确。在一般情况下,编译器 无法 导出是否有其他指向切片支持数组的指针。因此,重新分配不适用。上面的代码段实际上可以 保证 执行“
newSize”元素的副本。抱歉造成任何混乱。



