In tutorial is written:
The type
*T
is a pointer to aT
value. The&
operator generates a pointer to its operand.
I am just playing around with pointers in Go and have following:
example := 42
p:=&example
fmt.Println(reflect.TypeOf(&p)) // **int
fmt.Println(reflect.TypeOf(*p)) // int
Run Code Online (Sandbox Code Playgroud)
So if I got it correctly, &p
is a pointer to a pointer to an int value.
What is use of **Type in the Go language?
指针允许你传递一个内存地址,这样多个作用域就可以使用同一个地址,并且你可以在不改变地址的情况下改变该地址处的值;有效地允许您共享内存。指向指针的指针允许您将地址传递到内存地址,以便多个作用域可以使用它,并且您可以更改共享引用指向的地址。对于普通指针,如果更改指针的地址,则其他地方保存的该指针的任何其他副本都将变为“断开连接” - 它们将不再指向相同的值。
例如,您可能有两个变量在不同的工作线程中进行操作,并且您希望能够在它们之间来回切换一个中央引用。指向指针的指针是实现此目的的一种方法;中央引用可以更改为指向任何工作人员使用的指针。每个工作人员都会持有一个指向其正常操作的值的指针,而无需知道中央引用是否指向其指针。
或者,正如 @Volker 指出的,链表的规范示例。这是 C 中的示例,但 Go 中的指针逻辑是相同的。
归档时间: |
|
查看次数: |
1431 次 |
最近记录: |