天天看點

GO語言中的指針

我們最常聽說的是C語言中的指針,但其實GO語言也有指針。GO語言中會允許這個指針類型對資料進行讀寫,在傳遞資料時可以直接使用指針,不用拷貝資料。

但是GO語言中的類型指針是不能進行偏移和運算的,根據位址直接擷取到整體的資料塊。例如數組指針就是直接擷取到整個數組資訊,而不像c語言中通過偏移或運算來取到具體的元素資料。

1. 指針的使用方法

&用來取出位址,*用來根據位址取出位址指向的資料值。實際上,指針變量的值就是指針位址,對變量進行&操作可以擷取到變量的位址,這個位址也就是指針變量。對指針變量進行 *操作時,可以擷取到指針變量指向的原變量的值。

2. new()函數

new(Type)函數:隻接受一個參數類型。

*Type表示類型指針,new()傳回一個類型的指針,其對應的值就是這種類型Type的零值。

3. make()函數

make()函數用作記憶體配置設定,但它隻用于切片、map和channel的記憶體建立,它所傳回的類型就是這三個類型本身,這三個類型其實就是引用類型,可以看作為指針。通過make()函數來為他們進行初始化。