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

在 golang 中,[:] 语法与数组赋值有什么不同?

在 golang 中,[:] 语法与数组赋值有什么不同?

Go
猛跑小猪 2022-08-15 19:45:38
我目前正在浏览GoLang教程,并有以下疑问。arr1:=[...]int{1,2,3}arr2:=arr1arr1[1]=99fmt.Println(arr1)fmt.Println(arr2)它输出以下语句[1 99 3][1 2 3]这里只修改了数组a,这是有道理的,因为数组被视为值。如果我尝试遵循事情变得令人困惑a:=[...]int{1,2,3}b:=a[:]a[1]=88fmt.Println(a)fmt.Println(b)这导致打印[1 88 3][1 88 3]问题:这是否意味着说创建了数组的副本,并且说将创建一个指向基础数组的切片(在本例中为“a”)?b:=ab:=a[:]
查看完整描述

1 回答

?
泛舟湖上清波郎朗

TA贡献1818条经验 获得超3个赞

切片不会复制切片的数据。它将创建一个指向原始数组的新切片值。这使得切片操作与操作数组索引一样高效。因此,修改重新切片的元素(而不是切片本身)会修改原始切片的元素

https://blog.golang.org/slices-intro

检查上面的链接,了解切片背后的内部结构


查看完整回答
反对 回复 2022-08-15
  • 1 回答
  • 0 关注
  • 106 浏览
慕课专栏
更多

添加回答

举报

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