开发者社区> 问答> 正文

为什么在 Go 语言中函数参数传递只有值传递一种方式,但修改切片中的元素却能影响实参?

为什么在 Go 语言中函数参数传递只有值传递一种方式,但修改切片中的元素却能影响实参?

展开
收起
花开富贵111 2024-06-19 17:11:00 5 0
1 条回答
写回答
取消 提交回答
  • 虽然 Go 语言中函数参数传递只有值传递一种方式,但切片本身是一个结构体,包含指向底层数组的指针。当切片作为参数传递时,这个指针被复制,但指向的内存区域仍然是同一个。因此,对切片中已有元素的修改实际上是对同一块内存区域的修改,所以能够影响实参切片。然而,如果切片扩容导致底层数组迁移,则实参和形参将指向不同的内存区域,修改将不再同步。

    2024-06-19 17:38:26
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Go语言路上踩过的坑 立即下载
gohbase :HBase go客户端 立即下载
Go构建日请求千亿级微服务实践 立即下载