在 C/C++ 当中可以通过指针申请堆栈空间,指向某个变量空间,可以说不会指针,就不会 C/C++, 然而在 go 中也用指针的用法,其和 C/C++ 类型用法相差不大
一、指针
1. 指针变量
在 go 中, 一个变量对应了类型值的内存空间。一个指针的值是另一个变量的空间内存地址,那么通过指针,我们可以在不需要知道该变量的名字的情况下直接读或更新对应变量的值。
如下:
x := 1
p := &x // p, of type *int, points to x
fmt.Println(*p) // "1"
*p = 2 // equivalent to x = 2
fmt.Println(x) // "2"
另外,我们还要清楚对于任意类型的指针变量的零值都是 nil , 若测试到 p != nil, 那么 p 可以证明是一个指向某个有效变量的指针
var pInt *int // *int of type, pInt equal to nil
fmt.Println(pInt == nil) // true
var value int = 5
pInt