gpt4 book ai didi

arrays - 为什么在 Go 中很少使用列表?

转载 作者:IT老高 更新时间:2023-10-28 12:58:11 25 4
gpt4 key购买 nike

有没有办法在没有硬编码数组大小的情况下在 Go 中创建数组/slice ?为什么列表会被忽略?

在我广泛使用的所有语言中:Delphi、C#、C++、Python - 列表非常重要,因为它们可以动态调整大小,而不是数组。

在 Golang 中,确实有一个 list.Liststruct,但我看到的关于它的文档很少——无论是在 Go By Example 中。或者我拥有的三本围棋书籍——Summerfield、Chisnal 和 Balbaert——它们都在数组和 slice 上花费了大量时间,然后跳到 map 上。在源代码示例中,我也发现很少或根本没有使用 list.List

看起来,与 Python 不同,Range 不支持 List - IMO 的一大缺点。我错过了什么吗?

slice 很可爱,但它们仍然需要基于具有硬编码大小的数组。这就是 List 的用武之地。

最佳答案

几乎总是在考虑列表时 - 在 Go 中使用 slice 代替。 slice 是动态调整大小的。它们的基础是可以改变大小的连续内存片。

如果您阅读 SliceTricks wiki page,就会发现它们非常灵活。 .

这是一段摘录:-

Copy

b = make([]T, len(a))
copy(b, a) // or b = append([]T(nil), a...)

Cut

a = append(a[:i], a[j:]...)

Delete

a = append(a[:i], a[i+1:]...) // or a = a[:i+copy(a[i:], a[i+1:])]

Delete without preserving order

a[i], a = a[len(a)-1], a[:len(a)-1]

Pop

x, a = a[len(a)-1], a[:len(a)-1]

Push

a = append(a, x)

更新:这是一个链接到 blog post all about slices来自 go 团队本身,它很好地解释了 slice 和数组之间的关系以及 slice 内部。

关于arrays - 为什么在 Go 中很少使用列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21326109/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com