我已经阅读了this,但仍然没有完全意识到slice相对于array.So的优势,我期待着有人参与进来,所以解释得比它更好,我相信你可以:)
发布于 2010-01-24 13:48:09
切片在数组上有很多用处,其他发帖者已经提到了其中的几个。
然而,与指针不同的是,memory.
时非常有用
发布于 2010-01-20 11:51:55
在go中,数组是按值传递的;因此,要“按引用传递”,需要使用片。这还不是全部!引用Go的tutorial
数组的大小是其类型的一部分;但是,可以声明切片变量,可以将指针分配给具有相同元素类型的任何数组,或者-更常见的是-形式为low : high的切片表达式,表示从low到high-1索引的子数组。切片看起来很像数组,但没有显式的大小([]与10),并且它们引用了底层的、通常是匿名的常规数组的一段。如果多个片表示同一数组的片段,则它们可以共享数据;多个数组永远不能共享数据。
在Go程序中,切片比常规数组更常见;它们更灵活,具有引用语义,并且效率更高。它们缺少的是对常规数组存储布局的精确控制;如果您希望在结构中存储一个数组的100个元素,则应该使用常规数组。
在将数组传递给函数时,您几乎总是希望将形参声明为片。当您调用该函数时,获取数组的地址,Go将(有效地)创建一个切片引用并传递该引用。
发布于 2011-06-02 09:03:37
我认为Go博客上的this post对切片和数组的描述要好得多,也更详细。
https://stackoverflow.com/questions/2098874
复制相似问题