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)
}