当p是指针时,Go中的p和&p有什么区别?

时间:2018-10-06 05:41:40

标签: pointers go

我知道Go指针的地址有什么区别。

var int *a = new(int)

我可以这样定义指针变量。 当我检查此变量的地址时,发现了另一个地址。

fmt.Println(a, &a)

我想知道这些地址有什么区别。enter code here

1 个答案:

答案 0 :(得分:3)

a是指针类型的变量,这意味着它保存的数据是内存地址。因此,打印a会打印它所持有的内存地址,即它所指向的变量的地址。

a是一个变量,它存储在内存中的某个位置,a本身也有一个地址,而&a是该地址。

因此,您有2个变量:a和一个由new(int)创建的变量,其地址由new()返回,并且我们将其存储在a中。

请阅读以下内容,以获取简短而简短的指针介绍:

Dave Cheney: Understand Go pointers in less than 800 words or your money back