Go編程語言中的指針是一個(gè)變量,用于存儲(chǔ)另一個(gè)變量的內(nèi)存地址。您還可以像變量一樣將指針傳遞給函數(shù)。有兩種方法可以執(zhí)行以下操作:
創(chuàng)建一個(gè)指針并將其傳遞給函數(shù)
傳遞變量的內(nèi)存地址
在下面的程序中,我們使用函數(shù)ptf,該函數(shù)具有整數(shù)類型的指針參數(shù),該參數(shù)表示該函數(shù)僅接受指針類型的參數(shù)。同時(shí),此函數(shù)更改了變量x的值。在開始時(shí),x包含值100。但是在函數(shù)調(diào)用之后,值更改為748,如輸出所示。
// Go程序創(chuàng)建一個(gè)指針 //并將其傳遞給函數(shù) package main import "fmt" //接受指針作為參數(shù) func ptf(a *int) { //解引用 *a = 748 } func main() { //正常變量 var x = 100 fmt.Printf("函數(shù)調(diào)用前x的值為: %d\n", x) //獲取一個(gè)指針變量 //并分配地址 var pa *int = &x //通過以下方式調(diào)用函數(shù) //將指針傳遞給函數(shù) ptf(pa) fmt.Printf("函數(shù)調(diào)用后x的值為: %d\n", x) }
輸出:
函數(shù)調(diào)用前x的值為: 100 函數(shù)調(diào)用后x的值為: 748
考慮下面的程序,我們沒有創(chuàng)建指針來存儲(chǔ)變量x的地址,即上面程序中的pa。我們直接將x的地址傳遞給函數(shù)調(diào)用,該函數(shù)的調(diào)用類似于上述方法。
package main import "fmt" // int類型指針作為參數(shù) func ptf(a *int) { *a = 748 } func main() { var x = 100 fmt.Printf("函數(shù)調(diào)用前x的值為: %d\n", x) //通過調(diào)用函數(shù) //傳遞地址 //變量x ptf(&x) fmt.Printf("函數(shù)調(diào)用后x的值為: %d\n", x) }
輸出:
函數(shù)調(diào)用前x的值為: 100 函數(shù)調(diào)用后x的值為: 748
注意:您也可以使用短聲明運(yùn)算符(:=)在上述程序中聲明變量和指針。