Go 语言函数值传递值


传递是指在调用函数时将实际参数复制一份传递到函数中,这样在函数中如果对参数进行修改,将不会影响到实际参数。

默认情况下,Go 语言使用的是值传递,即在调用过程中不会影响到实际参数。

以下定义了 swap() 函数:

  1. /* 定义相互交换值的函数 */
  2. func swap(x, y int) int {
  3. var temp int
  4.  
  5. temp = x /* 保存 x 的值 */
  6. x = y /* 将 y 值赋给 x */
  7. y = temp /* 将 temp 值赋给 y*/
  8.  
  9. return temp;
  10. }

接下来,让我们使用值传递来调用 swap() 函数:

  1. package main
  2.  
  3. import "fmt"
  4.  
  5. func main() {
  6. /* 定义局部变量 */
  7. var a int = 100
  8. var b int = 200
  9.  
  10. fmt.Printf("交换前 a 的值为 : %d\n", a )
  11. fmt.Printf("交换前 b 的值为 : %d\n", b )
  12.  
  13. /* 通过调用函数来交换值 */
  14. swap(a, b)
  15.  
  16. fmt.Printf("交换后 a 的值 : %d\n", a )
  17. fmt.Printf("交换后 b 的值 : %d\n", b )
  18. }
  19.  
  20. /* 定义相互交换值的函数 */
  21. func swap(x, y int) int {
  22. var temp int
  23.  
  24. temp = x /* 保存 x 的值 */
  25. x = y /* 将 y 值赋给 x */
  26. y = temp /* 将 temp 值赋给 y*/
  27.  
  28. return temp;
  29. }

以下代码执行结果为:

  1. 交换前 a 的值为 : 100
  2. 交换前 b 的值为 : 200
  3. 交换后 a 的值 : 100
  4. 交换后 b 的值 : 200