指针内其实就是保存了一个变量地址。
var p *int
这行代码声明了一个 int 类型的指针 p
i := 42
p = &i
& 符号是取地址符,&i 代表的是变量 i 的内存地址。
fmt.Println(*p) //打印指针p的值
*p = 21 //修改指针p的值
通过指针控制变量的值的变化。这也就是通常所说的“间接引用”或“非直接引用”。
看一个代码实例
package main
import (
"fmt"
)
func main() {
i, j := 45, 1973
p := &i //p保存的是i的地址
fmt.Println(*p) //*p是指针,通过这个指针去读取i
*p = 27 //赋值27给指针*p
fmt.Println(i) //打印i
p = &j //p保存的地址换成了j的地址
*p = *p / 37 //用指针带入j做除法
fmt.Println(j) //打印j
}
运行结果
45
27
53