天天看点

GO语言中的指针

我们最常听说的是C语言中的指针,但其实GO语言也有指针。GO语言中会允许这个指针类型对数据进行读写,在传递数据时可以直接使用指针,不用拷贝数据。

但是GO语言中的类型指针是不能进行偏移和运算的,根据地址直接获取到整体的数据块。例如数组指针就是直接获取到整个数组信息,而不像c语言中通过偏移或运算来取到具体的元素数据。

1. 指针的使用方法

&用来取出地址,*用来根据地址取出地址指向的数据值。实际上,指针变量的值就是指针地址,对变量进行&操作可以获取到变量的地址,这个地址也就是指针变量。对指针变量进行 *操作时,可以获取到指针变量指向的原变量的值。

2. new()函数

new(Type)函数:只接受一个参数类型。

*Type表示类型指针,new()返回一个类型的指针,其对应的值就是这种类型Type的零值。

3. make()函数

make()函数用作内存分配,但它只用于切片、map和channel的内存创建,它所返回的类型就是这三个类型本身,这三个类型其实就是引用类型,可以看作为指针。通过make()函数来为他们进行初始化。