为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
慕桂英3389331 2022-01-10 15:08:16
正如golang 中的 Array doc所说:Go 的数组是值。数组变量表示整个数组;它不是指向第一个数组元素的指针(就像 C 中的情况一样)。这意味着当您分配或传递数组值时,您将复制其内容。众所周知,当一个数组被创建时,会分配一块内存来保存这个数组中包含的值:( 来源:golang.org)并且C中的数组名指向第一个内存地址,然后它可以计算给定数组索引的地址并修改或读取该索引的值。但是这个文档说golang实现与此不同。我很困惑golang方式有什么优势以及它如何以目前的方式实现。任何人都可以告诉我这个,非常感谢!
查看完整描述

2 回答

?
繁星淼淼

TA贡献1775条经验 获得超11个赞

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

  1. 数组(固定数组)[n]T

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

  2. 映射(关联数组)[T]T

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

你也可以在这里询问 Golang 基础设施。https://github.com/golang/go/wiki/Questions


查看完整回答
反对 回复 2022-01-10
?
幕布斯7119047

TA贡献1794条经验 获得超8个赞

如果我们从文档中获取这个例子


var a [4]int

a[0] = 1

i := a[0]

// i == 1

根据文档,他们说在 C 中,如果您要访问 var a,您将获得指向a[0].


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


查看完整回答
反对 回复 2022-01-10
  • 2 回答
  • 0 关注
  • 195 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信