Go中&與*的區(qū)別以及使用

&:符號的意思是對變量取地址。
*: 是指針運算符 , 可以表示一個變量是指針類型 , 也可以表示一個指針變量所指向的存儲單元 ,也就是這個地址所存儲的值 。

例子:

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 的
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容