为什么Array是值以及它如何在Golang中实现?

时间:2016-05-12 15:18:35

标签: arrays go

正如Array doc in golang所说:

  

Go的数组是值。数组变量表示整个数组;它不是指向第一个数组元素的指针(如C中的情况)。这意味着当您分配或传递数组值时,您将复制其内容。

众所周知,创建数组时,将分配一块内存来保存此数组中包含的值:

C中的数组名称指向第一个内存地址,然后它可以计算给定数组索引的地址并修改或读取该索引的值。但是这个doc说golang实现与此不同。

我很困惑golang方式有什么优势以及它如何以当前的方式实现。任何人都可以告诉我这一点,非常感谢!

2 个答案:

答案 0 :(得分:1)

在Golang中,有3种类型可以处理数组。 (T = Go中的任何类型,如string,int等)(n =自然数)

  1. 数组(固定数组)[n] T
  2. var array [5]int
    array[1] = 2
    fmt.Println(array)
    
    1. 切片(动态数组)[] T

    2. map(关联数组)[T] T

    3. Go的数组是值。因为你只使用值和键是自然数的序列。 Golang以数组类型保存数组长度,因为数组是固定的(在声明之后),Golang可以创建一个数组长度的内存。

      此外,您可以在这里询问Golang基础设施。 https://github.com/golang/go/wiki/Questions

答案 1 :(得分:0)

如果我们从doc

中取这个例子
var a [4]int
a[0] = 1
i := a[0]
// i == 1

根据文档,他们说如果你要访问var a,你会得到一个指向a[0]的指针。

我不确定实施它的优势或意思

相关问题