&:符號的意思是對變量取地址。
*: 是指針運算符 , 可以表示一個變量是指針類型 , 也可以表示一個指針變量所指向的存儲單元 ,也就是這個地址所存儲的值 。
例子:
func main() {
var a *int // 存儲的是int的指針,目前為空
var b int = 4 // 存儲的是int的值
a = &b // a 指向 b 的地址
a = b // a 無法等于 b,會報錯,a是指針,b是值,存儲的類型不同
fmt.Println(a) // a:0xc00000a090(返回了地址)
fmt.Println(*a) // *a:4(返回了值)
fmt.Println(*&a) // *抵消了&,返回了0xc00000a090本身
*a = 5 // 改變 a 的地址的值
fmt.Println(b) // b:5,改變后 b 同樣受到改變,因為 a 的地址是指向 b 的
}