假設你有一個變數:
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
}