假設你有一個變數:

age := 20

使用 &age 可以取得這個變數的指標,也就是它在記憶體裡的位址。

當你有了這個變數的指標後,可以使用 * 運算子來取得它指向的值:

age := 20
ageptr := &age
agevalue := *ageptr

這在你想要呼叫一個函式並將該變數作為參數傳遞時很有用。預設情況下,Go 會在函式中複製該變數的值,所以這不會改變 age 的值:

func increment(a int) {
    a = a + 1
}

func main() {
    age := 20
    increment(age)

    //age 仍然是 20
}

你可以使用指標來解決這個問題:

func increment(a *int) {
    *a = *a + 1
}

func main() {
    age := 20
    increment(&age)

    //age 現在變成了 21
}