Go语言如何使用指针变量
1、打开VScode开发工具,新建‘Pointer.go’文件

2、普通类型变量的值存在内存的栈,要得到变量的地址可以使用符号&,例如下面定义一个int类型的变量a,a的值是10,打印出a的地址,代码如下:
package main
import "fmt"
func main() {
var a int = 10
fmt.Println("a的地址是:",&a)
}

3、保存代码后,在VScode开发工具的终端,运行代码
go run Pointer.go
打印出a变量的地址

4、指针变量不同于普通类型变量在于指针变量的值是一个内存地址,这个地址存放
一个值,叫做指针指向的值。修改代码如下:
package main
import "fmt"
func main() {
var a int = 10
fmt.Println("a的地址是:",&a)
var p *int = &a
fmt.Println("p的值是:",p)
}

5、保存代码后,在VScode开发工具的终端,运行代码
go run Pointer.go
打印出a变量的地址,指针变量p的值,可以发现这两者是相等的,因为p是指针变量,指针变量的值是一个地址,而例子中是将a的地址赋值给了p

6、那么指针变量存放地址指向的值又是多少呢,其实就是a变量的值,因为存放的地址是a变量的地址,修改代码验证一下:
package main
import "fmt"
func main() {
var a int = 10
fmt.Println("a的地址是:",&a)
var p *int = &a
fmt.Println("p的值是:",p)
fmt.Println("p指向的值是:",*p)
}

7、保存代码后,在VScode开发工具的终端,运行代码
go run Pointer.go
打印出a变量的地址,指针变量p的值,p指向的值为10,就是a变量的值,验证了上一步的结论。
