Go語言中的指標

2021-10-05 09:28:45 字數 944 閱讀 9041

區別於c/c++中的指標,go語言中的指標不能進行偏移和運算,是安全指標。

任何程式資料載入記憶體後,在記憶體都有他們的位址,這就是指標。而為了儲存乙個資料在記憶體中的位址,我們就需要指標變數。

比如,「永遠不要高估自己」這句話是我的座右銘,我想把它寫入程式中,程式一啟動這句話是要載入到記憶體(假設記憶體位址0x123456),我在程式中把這段話賦值給變數a,把記憶體位址賦值給變數b。這時候變數b就是乙個指標變數。通過變數a和變數b都能找到我的座右銘。

每個變數在執行時都擁有乙個位址,這個位址代表變數在記憶體中的位置。go語言中使用&字元放在變數前面對變數進行「取位址」操作。 go語言中的值型別(int、float、bool、string、array、struct)都有對應的指標型別,如:*int、*int64、*string等。

取變數指標的語法如下:

ptr := &v // v的型別為t

其中:

func

main()

我們來看一下b := &a的圖示:

在對普通變數使用&操作符取位址後會獲得這個變數的指標,然後可以對指標使用*操作,也就是指標取值,**如下。

func

main()

輸出如下:

type of b:

*int

type of c:

intvalue of c:

10

取位址操作符&和取值操作符*是一對互補操作符,&取出位址,*根據位址取出位址指向的值。

func

modify1

(x int

)func

modify2

(x *

int)

func

main()

new內建函式建立型別的指標

go語言中的指標

go語言中函式的傳參都是通過值傳遞,如果要在改變某個變數,可以通過指向該變數的指標傳遞。變數的指標位址 通過指標取變數的值 值傳遞var name 擼鐵怪 func this name string this name fmt.println name 擼鐵怪指標位址傳遞 var name 張全蛋 ...

Go語言中的指標

go語言中的指標相對簡單,所謂的簡單是因為go語言的指標並不能進行運算,比如說c語言中,獲取乙個指標之後可以進行加法計算。go語言中指標可以指向a,也可以指向b但是並不能像c語言一樣,通過加1來指向另乙個變數。go語言只有值傳遞一種方式 也就是引數在傳遞時,是以拷貝的形式傳遞的,修改傳遞的引數並不影...

go 指標陣列 go語言中的指標陣列

宣告乙個包含有5個整數指標型別的陣列,我們可以在初始化時給相應位置的元素預設值。下面是給索引為0的元素乙個新建的的int型別指標 預設為0 給索引為1的元素指向值v的位址,剩下的沒有指定預設值的元素為指標的zero值也就是nil package main import fmt func main f...