指针

Go 语言也有指针。指针用来保存一个值的内存地址。

类型 *T 就是类型 T 的指针类型。指针的 零值 ( zero value )是: nil

  1. var p *int

操作符( operator ) & 用来取被操作数( operand )的指针(内存地址):

  1. i := 42
  2. p = &i

操作符 * 用来取出指针指向的值:

  1. fmt.Println(*p)
  2. *p = 21

这个操作简称 取值 ( dereferencing )。

/_src/tour/pointers.go

  1. package main
  2.  
  3. import "fmt"
  4.  
  5.  
  6. func main() {
  7. i, j := 42, 2701
  8.  
  9. p := &i // point to i
  10. fmt.Println(*p) // read i through the pointer
  11.  
  12. *p = 21 // set i through the pointer
  13. fmt.Println(i) // see the new value of i
  14.  
  15. p = &j // point to j
  16. *p = *p / 37 // divide j through the pointer
  17. fmt.Println(j) // see the new value of j
  18. }

注解

C 语言不同, Go 语言指针 没有指针算术 ( pointer arithmetic )。

下一步

下一节 我们一起来看看 Go 语言 结构体

订阅更新,获取更多学习资料,请关注我们的 微信公众号

../_images/wechat-mp-qrcode.png小菜学编程

微信打赏