Go语言中函数参数是按值传递还是引用传递?
- 内容介绍
- 文章标签
- 相关推荐
本文共计1551个文字,预计阅读时间需要7分钟。
在一个程序中,变量分为变量名和变量内容两部分,变量内容的存储通常会被分配到堆或栈上。在Go语言中,存在两种传递变量的方式:值传递和引用传递。值传递会直接将变量内容复制一份,而引用传递则是传递变量地址,这样在函数内部对变量内容的修改会影响到原始变量。
一个程序中,变量分为变量名和变量内容,变量内容的存储一般会被分配到堆和栈上。而在 Go 语言中有两种传递变量的方式值传递和引用传递。其中值传递会直接将变量内容附在变量名上传递,而引用传递会将变量内容的地址附在变量名上传递。
Golang 中是如何做到如果在面试时有面试官提问你:“Go 的参数是如何传递的?”你会怎么回答呢?
这个问题其实只有一个答案。因为在 Golang 中所有的类型传递都是通过值传递实现的,而不是引用传递,即使是指针的传递也是通过 copy 指针的方式进行。另外对于一些包裹了底层数据的数据结构,其值传递的过程中,复制的也只是实例的指针,而不是底层数据所暴露出来的指针。
本文共计1551个文字,预计阅读时间需要7分钟。
在一个程序中,变量分为变量名和变量内容两部分,变量内容的存储通常会被分配到堆或栈上。在Go语言中,存在两种传递变量的方式:值传递和引用传递。值传递会直接将变量内容复制一份,而引用传递则是传递变量地址,这样在函数内部对变量内容的修改会影响到原始变量。
一个程序中,变量分为变量名和变量内容,变量内容的存储一般会被分配到堆和栈上。而在 Go 语言中有两种传递变量的方式值传递和引用传递。其中值传递会直接将变量内容附在变量名上传递,而引用传递会将变量内容的地址附在变量名上传递。
Golang 中是如何做到如果在面试时有面试官提问你:“Go 的参数是如何传递的?”你会怎么回答呢?
这个问题其实只有一个答案。因为在 Golang 中所有的类型传递都是通过值传递实现的,而不是引用传递,即使是指针的传递也是通过 copy 指针的方式进行。另外对于一些包裹了底层数据的数据结构,其值传递的过程中,复制的也只是实例的指针,而不是底层数据所暴露出来的指针。

