一、定義:指針也叫指針變量,存儲一個變量的地址。兩個符號:& 取一個變量地址;* 取一個指針變量所指向的地址的值函數
package main import ( "fmt" ) func main() { var x int var x_ptr *int x = 10 x_ptr = &x fmt.Println(x) fmt.Println(x_ptr) fmt.Println(*x_ptr) }
結果圖spa
&符號是取變量地址,*符號是取地址指向的值;一個普通的變量,不是指針變量的話,只能使用&符號取到地址,而不能使用*符號指針
&符號和*符號是能夠相互抵消的,示例代碼以下code
package main import ( "fmt" ) func main() { var x int var x_ptr *int x = 10 x_ptr = &x fmt.Println(x) //輸出x的值 fmt.Println(&x_ptr) //輸出x_ptr的地址 fmt.Println(*x_ptr) //輸出x_ptr指向的值 fmt.Println(x_ptr) //輸出x的地址 fmt.Println(*&x_ptr) //*和&能夠相互抵消 fmt.Println(&*x_ptr) fmt.Println(&x) fmt.Println(*&x) }
結果圖blog
二、用途:做爲實參傳入函數,改變原來變量的值class
package main import ( "fmt" ) func change(x *int) { *x = 200 } func main() { var x int = 100 fmt.Println(x) change(&x) fmt.Println(x) }
結果圖import
三、使用new關鍵字建立一個指針變量
package main import ( "fmt" ) func set_value(x_ptr *int) { *x_ptr = 100 } func main() { //使用new建立一個指針 x_ptr := new(int) //將指針指向某值的地址 set_value(x_ptr) //打印該指針指向的地址 fmt.Println(x_ptr) //打印指針所在地址 fmt.Println(&x_ptr) //打印指針指向地址的值 fmt.Println(*x_ptr) }
結果圖im
四、交換兩個變量值示例img
package main import ( "fmt" ) func swap(x, y *int) { *x, *y = *y, *x } func main() { x_val := 100 y_val := 200 swap(&x_val, &y_val) fmt.Println(x_val) fmt.Println(y_val) }
結果圖