Go虽然保留了指针,但与其他编程语言不同的是,在Go当中不支持指针运算以及”->”运算符,而直接采用”.”选择符来操作指针目标对象的成员。
操作符”&“取变量地址,使用“*”通过指针间接访问目标对象
默认值是nil而非NULL

一个指针变量可以指向任何一个值的内存地址。指针变量类似于变量和常量,在使用指针前需要声明。指针声明格式如下:

  1. var var_name *var-type

如何使用指针

  • 定义指针变量

  • 为指针变量赋值

  • 访问指针变量中指向地址的值

  • 在指针类型前面加上*号(前缀)来获取指针所指向的内容。

Go空指针

当一个指针被定义后没有分配到任何变量时,它的值是nil(空指针)。

Go指针数组

可以定义一个指针数组来存储地址。

以下声明了整型指针数组:

  1. var ptr [MAX]*int;

Go指向指针的指针

如果一个指针变量存放的又是另一个指针变量的地址,则称这个指针变量为指向指针的指针变量。
当定义一个指向指针的指针变量时,第一个指针存放第二个指针的地址,第二个指针存放变量的地址:
Go语言指针 - 图1

Go向函数传递指针参数

通过引用或地址传参,在函数调用时可以改变其值
Go语言允许向函数传递指针,只需要在函数定义的参数上设置为指针类型即可。

递增递减语句

在Go当中,++是作为语句而并不是作为表达式


Go语言指针 - 图2