Golang 指针(九)|Go主题月

705 阅读1分钟

Golang 指针

指针的含义是存储变量、常量所在的内存地址

有别于C/C++语言的指针概念,Golang 的是安全指针 不能进行偏移和运算

使用指针的好处:

  • Golang 的指针操作十分简单,只需要记住:&(取地址)*(根据地址取值)
  • Golang 的函数传参都是值拷贝。所以修改某个变量,我们还可以创建一个指向该变量地址指针。传递数据使用指针,避免数据拷贝

指针地址和指针类型

Golang 程序运行时,每个变量都拥有一个地址,指向该变量在内存中的位置。

Golang 中使用 & 放在变量前面,表示对变量进行 取地址 操作。 Golang 中的值类型都有对应的指针类型,如:int => (*int、*int64),string => (*string)。

取变量指针的语法如下,&(取地址)*(根据地址取值) 举个例子: code-snapshot.png

指针取值

  • 在对普通变量使用& 取地址后会获得变量的指针
  • 对指针使用* 根据地址后会获得地址存放的值,指针取值代码如下。

code-snapshot (3).png

变量、指针地址、指针变量、取地址、取值的相互关系和特性如下:

  1. 对变量取地址(&)操作,获得这个变量的指针变量。
  2. 指针变量的值是该变量在内存中的位置。
  3. 对指针变量取值(*),获得的是指针变量指向地址存放的值。

指针传值示例:

code-snapshot (4).png

空指针

当一个指针被定义后没有分配到任何变量时,它的值为 nil 空指针的判断

code-snapshot (5).png