Go編程語言中的指針是一個變量,用于存儲另一個變量的內(nèi)存地址。您還可以像變量一樣將指針傳遞給函數(shù)。有兩種方法可以執(zhí)行以下操作:
創(chuàng)建一個指針并將其傳遞給函數(shù)
傳遞變量的內(nèi)存地址
在下面的程序中,我們使用函數(shù)ptf,該函數(shù)具有整數(shù)類型的指針參數(shù),該參數(shù)表示該函數(shù)僅接受指針類型的參數(shù)。同時,此函數(shù)更改了變量x的值。在開始時,x包含值100。但是在函數(shù)調(diào)用之后,值更改為748,如輸出所示。
// Go程序創(chuàng)建一個指針
//并將其傳遞給函數(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)
//獲取一個指針變量
//并分配地址
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)建指針來存儲變量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
注意:您也可以使用短聲明運算符(:=)在上述程序中聲明變量和指針。