值传递与引用传递的理解

要更好的理解值传递与引用传递,首先需要了解2个概念:形参与实参

1、形参

方法被调用时需要传递进来的参数,如:func(a int) 中的a,它只有在func被调用期间a才会有意义,也就是会被分配内存空间,在方法执行完之后,a就会被销毁释放空间,也就不存在了

2、实参

方法被调用时传入的是实际值,它在方法被调用前就已经被初始化并且在方法被调用时传入

a : = 10 //实参
func (a int)  int {
    a = a+10 //形参
    return a
}

有了这2个概念后,我们来看看值传递与引用传递

3、值传递

在方法被调用时,实参通过形参把它的内容副本传入方法内部,此时形参接收到的内容是实参值的一个拷贝。因此在方法内部对形参的任何操作,都仅仅是对这个副本的操作,而不影响原始值的内容

4、引用传递

“引用”也就是指向真实内容的地址值,在方法被调用时,实参的内存地址会被传递给形参。此时在方法内部,形参与实参指向同一块内存地址,所以对形参的操作会影响原始值的内容


书山有路勤为径 学海无涯苦作舟