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






