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