Go 語言函數(shù)引用傳遞值

Go 函數(shù)Go 函數(shù)

引用傳遞是指在調(diào)用函數(shù)時(shí)將實(shí)際參數(shù)的地址傳遞到函數(shù)中,那么在函數(shù)中對(duì)參數(shù)所進(jìn)行的修改,將影響到實(shí)際參數(shù)。

引用傳遞將指針參數(shù)傳遞到函數(shù)內(nèi),以下是交換函數(shù) swap() 使用了引用傳遞:

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

以下我們通過使用引用傳遞來調(diào)用 swap() 函數(shù):

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 )

   /* 調(diào)用 swap() 函數(shù)
   * &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 */
}

以上代碼執(zhí)行結(jié)果為:

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

Go 函數(shù)Go 函數(shù)