1. 程式人生 > >Go筆記-指針

Go筆記-指針

獨立 減少 運算 ++ rect 沒有 地址 指針 blob

Go 語言的取地址符是 &,放到一個變量前使用就會返回相應變量的內存地址 一個指針變量可以指向任何一個值的內存地址 它指向那個值的內存地址,在 32 位機器上占用 4 個字節,在 64 位機器上占用 8 個字節,並且與它所指向的值的大小無關。當然,可以聲明指針指向任何類型的值來表明它的原始性或結構性;你可以在指針類型前面加上 * 號(前綴)來獲取指針所指向的內容,這裏的 * 號是一個類型更改器。使用一個指針引用一個值被稱為間接引用。 當一個指針被定義後沒有分配到任何變量時,它的值為 nil。 對於任何一個變量 var, 如下表達式都是正確的:var == *(&var) 註意: 不能得到一個文字或常量的地址,例如: const i = 5 ptr := &i // 錯誤 ptr2 := $10 // 錯誤 指針運算在Go中不合法 c = *p++ 對空指針的反向引用是非法的,例如: var ptr *int a := *ptr 適度使用指針的優點: 指針的一個高級應用是你可以傳遞一個變量的引用(如函數的參數),這樣不會傳遞變量的拷貝。指針傳遞是很廉價的,只占用 4 個或 8 個字節。當程序在工作中需要占用大量的內存,或很多變量,或者兩者都有,使用指針會減少內存占用和提高效率。被指 向的變量也保存在內存中,直到沒有任何指針指向它們,所以從它們被創建開始就具有相互獨立的生命周期。 過度使用指針的缺陷: 另一方面(雖然不太可能),由於一個指針導致的間接引用(一個進程執行了另一個地址),指針的過度頻繁使用也會導致性能下降。 指針也可以指向另一個指針,並且可以進行任意深度的嵌套,導致你可以有多級的間接引用,但在大多數情況這會使你的代碼結構不清晰。 學習參考處:https://github.com/Unknwon/the-way-to-go_ZH_CN/blob/master/eBook/directory.md

Go筆記-指針