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
更多建議: