Go编程语言中的指针是一个变量,用于存储另一个变量的内存地址。您还可以像变量一样将指针传递给函数。有两种方法可以执行以下操作:
创建一个指针并将其传递给函数
传递变量的内存地址
在下面的程序中,我们使用函数ptf,该函数具有整数类型的指针参数,该参数表示该函数仅接受指针类型的参数。同时,此函数更改了变量x的值。在开始时,x包含值100。但是在函数调用之后,值更改为748,如输出所示。
// Go程序创建一个指针
//并将其传递给函数
package main
import "fmt"
//接受指针作为参数
func ptf(a *int) {
//解引用
*a = 748
}
func main() {
//正常变量
var x = 100
fmt.Printf("函数调用前x的值为: %d\n", x)
//获取一个指针变量
//并分配地址
var pa *int = &x
//通过以下方式调用函数
//将指针传递给函数
ptf(pa)
fmt.Printf("函数调用后x的值为: %d\n", x)
}
输出:
函数调用前x的值为: 100
函数调用后x的值为: 748
考虑下面的程序,我们没有创建指针来存储变量x的地址,即上面程序中的pa。我们直接将x的地址传递给函数调用,该函数的调用类似于上述方法。
package main
import "fmt"
// int类型指针作为参数
func ptf(a *int) {
*a = 748
}
func main() {
var x = 100
fmt.Printf("函数调用前x的值为: %d\n", x)
//通过调用函数
//传递地址
//变量x
ptf(&x)
fmt.Printf("函数调用后x的值为: %d\n", x)
}
输出:
函数调用前x的值为: 100
函数调用后x的值为: 748
注意:您也可以使用短声明运算符(:=)在上述程序中声明变量和指针。