栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Golang将数组传递给函数并对其进行修改

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Golang将数组传递给函数并对其进行修改

解释很简单: 在上面的代码中 没有
声明或明确使用单个数组
。您的

tab
局部变量和
tab
参数是
slices

在Go语言中,数组的长度是该类型的一部分,例如

[3]int
(在一定程度上是正确的,
[2]int
并且
[3]int
是2种不同/不同的数组类型)。如果长度不存在(
[2]int
在复合文字中
像显式一样或隐式一样
[...]int{1, 2, 3}
),则该长度不是数组类型,而是切片类型。

是的,当您阅读时,数组值表示其所有元素,并且在传递(或分配)时会复制其所有元素。切片不过是小的描述符,标头,描述了数组的连续部分。当切片被传递(或分配)时,仅复制此标头(包括指针),该标头指向相同的基础数组。因此,如果您修改切片副本的元素,则更改将反映在原始切片中,因为只有一个支持该元素的后备阵列。

如果您想确切地了解切片头中的内容,则可以检查

reflect.SliceHeader
类型:它
struct
包含指向切片第一个元素的指针,切片的长度和容量。

请阅读以下博客文章,其中详细说明了这一点:

切成薄片:用法和内部原理

数组,切片(和字符串):“追加”的机制



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/417748.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号