您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

解释很简单: 在上面的代码 没有 声明或明确使用单个数组。您的tab局部变量和tab参数是slices

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

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

如果您想确切地了解切片头中的内容,则可以检查reflect.SliceHeader类型:它struct包含指向切片第一个元素的指针,切片的长度和容量。

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

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

Go 2022/1/1 18:22:22 有331人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶