Golang 指针
指针的含义是存储变量、常量所在的内存地址。
有别于C/C++语言的指针概念,Golang 的是安全指针 不能进行偏移和运算。
使用指针的好处:
- Golang 的指针操作十分简单,只需要记住:
&(取地址)和*(根据地址取值) - Golang 的函数传参都是值拷贝。所以修改某个变量,我们还可以创建一个指向
该变量地址的指针。传递数据使用指针,避免数据拷贝
指针地址和指针类型
Golang 程序运行时,每个变量都拥有一个地址,指向该变量在内存中的位置。
Golang 中使用 & 放在变量前面,表示对变量进行 取地址 操作。
Golang 中的值类型都有对应的指针类型,如:int => (*int、*int64),string => (*string)。
取变量指针的语法如下,&(取地址)和*(根据地址取值) 举个例子:
指针取值
- 在对普通变量使用
& 取地址后会获得变量的指针 - 对指针使用
* 根据地址后会获得地址存放的值,指针取值代码如下。
变量、指针地址、指针变量、取地址、取值的相互关系和特性如下:
- 对变量取地址(&)操作,获得这个变量的指针变量。
- 指针变量的值是该变量在内存中的位置。
- 对指针变量取值(*),获得的是指针变量指向地址存放的值。
指针传值示例:
空指针
当一个指针被定义后没有分配到任何变量时,它的值为 nil 空指针的判断