指針和引用均用于間接訪問變量:指針指向變量地址,直接訪問變量。引用是別名,存儲指向變量的指針,間接訪問變量。指針用 * 定義和取消引用,修改指針會影響變量。引用用 & 獲取地址,* 引用地址,修改引用不影響變量。指針可指向任何變量,包括指針;引用只能指向變量。
Golang 指針和引用
指針和引用之間的區(qū)別
指針和引用都是 Golang 中用于間接訪問變量的機制。主要區(qū)別在于:
指針是一個保存另一個變量地址的變量。它直接指向該變量。
引用是一個別名,它存儲指向另一個變量的指針。引用不直接指向變量。
指針
使用 *
符號定義和取消引用指針。
指針指向變量的值,而不是直接包含該值。
對指針進行修改會影響被指向的變量。
指針可以指向任何類型的變量,包括其他指針。
引用
使用 &
符號獲取變量的地址,使用 *
符號引用已獲取的地址。
引用始終指向變量的地址。
修改引用不會影響被指向的變量。
引用只能指向其他變量,不能指向指針。
示例
<code class="go">package main import "fmt" func main() { // 創(chuàng)建一個變量 x := 10 // 創(chuàng)建一個指向 x 的指針 p := &amp;x // 創(chuàng)建一個引用 x 的引用 q := &amp;x // 通過指針修改變量 *p = 20 // 引用不會影響變量 *q++ // 打印結(jié)果 fmt.Println("x:", x) // 輸出: 20 }</code>
登錄后復(fù)制
在這個示例中:
p
是一個指向 x
的指針,對 *p
的修改會更新 x
的值。
q
是指向 x
的引用,對 *q
的修改不會更新 x
的值。