我在读一本书时偶然发现了有关传递参数的主题。
书上说将数组的一部分传递给函数需要 24 个字节。并且它声明最好传递 slice ,因为不会复制底层数组。但是传递一个指针不是只需要 8 个字节吗?
书:行动起来
开销是否如此之小以至于传递 slice 是可行的方法?与传递指针相比
最佳答案
复制任何小于缓存行(在大多数常见 CPU 上通常为 128 字节)的内容基本上需要相同的时间,因此 8 字节和 24 字节之间没有真正的区别。通常更多的时间花在取消引用指针上而不是复制任何东西上小的。
由于通过指针操作数组的默认方法是在 slice 中,因此使用 slice 而不是指向数组的指针更为惯用。然而,书中引用的是传递数组值,而不是通过指针,将复制整个数组。
关于arrays - 传递 slice 而不是指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35875217/