golang传值和传引用
这里不会解释关于指针的情况,如果读者对C语言或者C++的指针比较了解,那么就能更好地理解本文。
定义
对于代码
modify(a);
a.modify();
如果modify中对于a的修改不会改变传入的a的值,那么就是传值调用;否则,是传引用。
传值调用是将传入的变量在内存中复制一份进行操作,所以本质是存储在不同内存地址的不同变量。
传引用是将传入变量的内存地址,在函数操作中,通过内存地址将变量取出进行操作,所以本质是存储在同一个内存地址的相同变量。
Go语言
基础类型
基本类型:byte,int,bool,string
均是传值调用。
数组
传值调用
func main() {
var array = [3]int{
0, 1, 2}
var array2 = array
slice2[2]

本文详细探讨了Go语言中传值和传引用的概念,包括基础类型、数组、数组切片、结构体、Map、channel和function的传递方式。重点指出,虽然Go语言在函数调用时表面上看起来像是传值,但通过指针,某些数据结构如数组切片、Map和channel实际上实现了传引用的效果。建议在处理这些数据结构时,理解其内存和指针的工作原理。

872

被折叠的 条评论
为什么被折叠?



