func main() {
	var a int = 10
	fmt.Println("a的地址是 = ", &a) // &a获取a的地址
}

输出结果:
a的地址是 = 0xc000092000

定义指针

var p *int // 整数指针
var s *string // string指针
var f *float // 浮点数指针
...

实例:

func main() {
	var a string = "hello" // 声明实际变量
	var p *string 	// 声明指针变量
	p = &a 	// p保存a的地址
	fmt.Println(p)	// 输出0xc0000101e0
	fmt.Println(*p) // 输出 hello
}

空指针

当指针被定义后,未分配变量, 默认值会为nil
nil指针也被称为空指针

func main() {
	var p *int
	fmt.Println(p)	// 输出nil
}

new函数

new函数可以申请一个合法内存

func main() {
	// 1
	var a int = 100 	// 声明实际变量
	var p1 *int 	// 声明指针变量
	p1 = &a 	// 获取a的地址(也是合法内存)
	fmt.Println(*p1)
	
	// 2使用new函数
	var p2 *int // 声明指针变量
	p2 = new(int)	// 使用new函数,申请一个合法内存
	*p2 = 100
	fmt.Println(*p2)

	// 3自动推动类型
	p3 := new(int)
	*p3 = 100
	fmt.Println(*p3)
}