Go 語言函數引用傳遞值

Go 函數Go 函數

引用傳遞是指在調用函數時將實際參數的地址傳遞到函數中,那麼在函數中對參數所進行的修改,將影響到實際參數。

引用傳遞指針參數傳遞到函數內,以下是交換函數 swap() 使用了引用傳遞:

/* 定義交換值函數*/
func swap(x *int, y *int) {
   var temp int
   temp = *x    /* 保持 x 地址上的值 */
   *x = *y      /* 將 y 值賦給 x */
   *y = temp    /* 將 temp 值賦給 y */
}

以下我們通過使用引用傳遞來調用 swap() 函數:

package main

import "fmt"

func main() {
   /* 定義局部變數 */
   var a int = 100
   var b int= 200

   fmt.Printf("交換前,a 的值 : %d\n", a )
   fmt.Printf("交換前,b 的值 : %d\n", b )

   /* 調用 swap() 函數
   * &a 指向 a 指針,a 變數的地址
   * &b 指向 b 指針,b 變數的地址
   */
   swap(&a, &b)

   fmt.Printf("交換後,a 的值 : %d\n", a )
   fmt.Printf("交換後,b 的值 : %d\n", b )
}

func swap(x *int, y *int) {
   var temp int
   temp = *x    /* 保存 x 地址上的值 */
   *x = *y      /* 將 y 值賦給 x */
   *y = temp    /* 將 temp 值賦給 y */
}

以上代碼執行結果為:

交換前,a 的值 : 100
交換前,b 的值 : 200
交換後,a 的值 : 200
交換後,b 的值 : 100

Go 函數Go 函數