Skip to content

指针

https://tour.go-zh.org/moretypes/1

Go 拥有指针。指针保存了值的内存地址。

go
var i = 42
p := &i
  • i 值,即 42
  • &i: & 是 取地址运算符,&i 假设等于 0x1400012ab8
  • *p: * 是 顺着网线找你(顺着地址拿值)

*p 是 解引用(dereference),零值为 nil。

注意

* 只能用于 “指针类型”,所以没有 *i!!!

因为 i 的类型是基本类型,不是指针类型

例1

go
func main() {
	i, j := 42, 2701

	p := &i          
	fmt.Println(*p) // 42
	*p = 21         
	fmt.Println(i)  // 21

	p = &j         
	*p = *p / 37    
	fmt.Println(j) // 2701/37 = 73
}