传递切片而不是指针

时间:2016-03-08 18:31:59

标签: arrays go

我正在读一本书并且遇到了关于传递参数的话题。

这本书说将一个数组的片段传递给一个函数需要24个字节。并且它声明最好传递切片,因为底层数组不会被复制。但是不传递指针只需要8个字节?

书:开始行动

开销是否太小以至于传递切片是要走的路?与传递指针相对应

1 个答案:

答案 0 :(得分:2)

复制任何低于缓存行的内容(通常在大多数常见CPU上为128字节)基本上花费相同的时间,因此8字节和24之间没有真正的区别。通常花费更多时间来取消引用指针而不是复制任何内容小。

由于通过指针操作数组的默认方法是在一个切片中,因此使用切片而不是指向数组的指针更为惯用。然而,书中的引用是指传递一个数组值,而不是通过一个指针,复制整个数组。