简介

Go 语言的指针的含义是:记录某个变量内存地址的变量

var a int = 42
var p *int = &a

p 就是指针变量

fmt.Println(p)  // 输出地址,例如:0xc000014088
fmt.Println(*p) // 输出 42

*p 意思是解引用

基本操作

获取内存地址

a := 100
p := &a

解引用

fmt.Println(*p) // 100
*p = 200
fmt.Println(a)  // 200

空指针判断

var p *int
if p == nil {
    fmt.Println("p is nil")
}

引用传递

Go 语言中函数的参数默认是值传递,如果想要修改原始值就必须使用指针

func changeValue(p *int) {
    *p = 100
}

func main() {
    a := 10
    changeValue(&a)
    fmt.Println(a) // 输出 100
}