指針內(nèi)其實(shí)就是保存了一個(gè)變量地址师骗。
var p *int
這行代碼聲明了一個(gè) int 類型的指針 p
i := 42
p = &i
& 符號(hào)是取地址符,&i 代表的是變量 i 的內(nèi)存地址妇智。
fmt.Println(*p) //打印指針p的值
*p = 21 //修改指針p的值
通過(guò)指針控制變量的值的變化滥玷。這也就是通常所說(shuō)的“間接引用”或“非直接引用”氏身。
看一個(gè)代碼實(shí)例
package main
import (
"fmt"
)
func main() {
i, j := 45, 1973
p := &i //p保存的是i的地址
fmt.Println(*p) //*p是指針,通過(guò)這個(gè)指針去讀取i
*p = 27 //賦值27給指針*p
fmt.Println(i) //打印i
p = &j //p保存的地址換成了j的地址
*p = *p / 37 //用指針帶入j做除法
fmt.Println(j) //打印j
}
運(yùn)行結(jié)果
45
27
53