List 何时选择容器/列表而不是切片

List 何时选择容器/列表而不是切片,list,go,slice,List,Go,Slice,我没有遇到过任何问题,这些问题是无法通过切片来解决的 根据列表实现,任何对列表的插入最终都会创建一个新元素结构,该结构将值包装到interface{} 列表的迭代也不支持范围。 我发现有一篇文章说在生产中永远不要使用list.list 只是想知道,为什么它会出现在go源代码包中 [ 这里有人在生产中使用了列表并获得了一些优势吗?list.list是a的一个实现。切片是对数组的抽象。切片提供了功能丰富的数组,包括不断增长的数组,而无需复制数据,获取切片的“切片”而无需重新分配或复制。 这一切都可以

我没有遇到过任何问题,这些问题是无法通过切片来解决的

根据列表实现,任何对列表的插入最终都会创建一个新元素结构,该结构将值包装到
interface{}
列表的迭代也不支持范围。 我发现有一篇文章说在生产中永远不要使用
list.list

只是想知道,为什么它会出现在go源代码包中 [


这里有人在生产中使用了列表并获得了一些优势吗?

list.list
是a的一个实现。切片是对数组的抽象。切片提供了功能丰富的数组,包括不断增长的数组,而无需复制数据,获取切片的“切片”而无需重新分配或复制。
这一切都可以归结为用例。链表本质上是一个不断增长的项目列表,不需要复制任何数据。链表非常适合在一个方向上遍历不断增长的数据。如果必须任意访问数据(从任何没有光标的索引中),则数组/切片是完美的,或必须从中间动态添加和删除数据


这是一个一般的答案。底线是,90%的时间你不需要列表。列表
。切片就足够了。

与切片相比,容器/列表可能有优势,也可能没有优势。对于大多数使用情况,切片是好的,更好的选择。容器/列表可能不会经常使用(与容器/堆相同)但它曾在Go的早期版本中使用过,包括它是为了提供链接列表实现,出于兼容性的原因,也因为它可能是正确的选择,所以它一直保留在那里。千万不要相信那些逐字逐句地告诉你“决不”的人做点什么。这一切都取决于。总是。是的,这显然是基于需求的。注意:)在其他编程语言中,比如java,90%的人会选择
Arraylist
is,或者在python中你更喜欢
list
。这就是为什么,我想知道,为什么不在go?@SiddhantaRath确切地说,它提供了与Slice类似的功能