首页 > 试题广场 >

在 Go 中,当使用 range 遍历切片时,如果在循环体中

[单选题]
在 Go 中,当使用 range 遍历切片时,如果在循环体中修改了切片的结构(如通过 append 增加长度),会对遍历过程产生什么影响?
  • 遍历索引会立即更新以反映新长度
  • 不会影响遍历过程,因为 range 使用原始切片的快照
  • 导致切片重新分配内存
  • 可能引发索引越界错误
go内存管理考虑了这种情况,在切片range访问中途,如果append扩容导致底层数组发生转移拷贝到新地址,遍历逻辑会重定向到新地址,不会出现内存访问问题。但是如果你把元素地址暴露给外部使用,那么旧地址是失效地址,会有问题。
发表于 今天 15:57:44 回复(0)