如何理解 Go 语言中的值传递?“Go 不存在指针传递或者引用传递”应该如何理解?
如何理解 Go 语言中的值传递?“Go 不存在指针传递或者引用传递”应该如何理解?
- 值传递是指在调用函数时,实参会被复制一份再传入函数,因此在函数内部修改这个副本,不会直接影响外部变量本身。
- Go 的参数传递本质上都是值传递。即使传的是指针、切片、
map、channel这类带有引用语义的值,传进去的也仍然是它们自身的一份拷贝。 - 之所以这些类型在函数内部看起来“能改到外面”,是因为拷贝后的值仍然指向同一份底层数据。
