/

Go 中的指標

Go 中的指標

假設你有一個變數:

1
age := 20

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

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

1
2
3
age := 20
ageptr := &age
agevalue := *ageptr

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

1
2
3
4
5
6
7
8
9
10
func increment(a int) {
a = a + 1
}

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

//age 仍然是 20
}

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

1
2
3
4
5
6
7
8
9
10
func increment(a *int) {
*a = *a + 1
}

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

//age 現在變成了 21
}

tags: [“Go”, “pointers”, “variables”]