1
rrfeng 2023-06-07 00:15:17 +08:00 via Android
看起来最后一种没啥毛病了。
另外这点开销大部分情况下你都不用关心… |
2
ben548 OP @rrfeng 确实是这样,性能影响非常有限,我也是自己去思考,总结一下,这玩意面试的时候有的时候爱问,思考完理解透了面试就不慌
|
3
GopherDaily 2023-06-07 00:36:52 +08:00
|
4
Ericcccccccc 2023-06-07 01:09:10 +08:00
一般就是你最后那种写法.
|
5
matrix1010 2023-06-07 10:04:56 +08:00
没有银弹。假如你的 source 有 100 万个元素但过滤完只有 10 个指定 capacity 就比较浪费了。或者如果 source 没有用你甚至可以直接写回 source 里不用 make 一个新 slice
|
6
sunznx 2023-06-07 10:18:26 +08:00
先瞎 j8 写,有性能问题再改,花里胡哨,什么网站的流量需要考虑这些鬼东西
|
7
CLMan 2023-06-07 12:16:28 +08:00
如果能预估最大容量,就是第 3 种写法。
go 的 slice 和 java 的 ArrayList 差不多,就是我们在数据结构与算法里面学到的基于数组实现的列表,基本的扩容策略是双倍扩容:每次 cap*2 ,摊还每次插入 O(1)。 所以第三种写法是在使用数组实现的列表时的常识,与具体语言无关。 |
8
hzzhzzdogee 2023-06-11 22:03:05 +08:00
纯复制的时候我喜欢直接
`copy()` |