Go語言基礎之指標

2021-09-27 12:09:54 字數 1058 閱讀 1483

go語言中的函式傳參都是值拷貝,當想修改某個變數時,就使用指標來操作。go中的指標&(取位址),*(根據位址取值)

每個變數在執行時都有乙個記憶體位址。go中使用&變數名,對變數進行取位址操作。go中的值型別(int、float、bool、string、array、struct),都有對應的指標型別如*int、*float、*bool、*string等。

func main()
取值使用*操作

func main()
指標傳值示例

func modify1(x int) 

func modify2(x *int)

func main()

經典示例

func main() 

// 執行報錯,因為都沒有進行初始化,沒有記憶體位址

func new(type) *type

// type表示型別,new函式只接受乙個引數,這個引數是乙個型別

// *type表示型別指標,new函式返回乙個指向該型別記憶體位址的指標。

func main()

make也是用於分配記憶體空間,區別於new的是,他只能用於slice、map以及channel的記憶體建立,而且它返回的型別就是這三個型別本身,而不是他們的指標型別,因為這三種型別就是引用型別,所以就沒有必要返回他們的指標了。make函式的函式簽名如下:

func make(t type, size ...integertype) type
在使用slice、map和chan時候都必須先使用make進行初始化,然後才能對其進行操作。

func main()
1.二者都是做記憶體分配的

2.make只能用於slice、map和channel的初始化,返回還是這三個應用型別的本身

3.new用於型別的記憶體分配,並且記憶體對應的值為型別零值,返回指向型別的指標

Go語言基礎之指標

作為21世紀的c語言,go可能多方面思考,最終還是保留了指標 因為go語言是類c語言,所以為了提高效率,仍然保留了指標。但是如果沒有接觸過指標,可能學起來指標需要多多思考一下了。指標通常情況下,也被稱為小白勸退神奇。先看這兩行 var n1 int 666 fmt.println n1 結果 666...

Go語言基礎之指標

區別於c c 中的指標,go語言中的指標不能進行偏移和運算,是安全指標。go語言中的函式傳參都是值拷貝,當我們想要修改某個變數的時候,我們可以建立乙個指向該變數位址的指標變數。傳遞資料使用指標,而無須拷貝資料。型別指標不能進行偏移和運算。go語言中的指標操作非常簡單,只需要記住兩個符號 取位址 和 ...

十四 Go語言基礎之指標

區別於c c 中的指標,go語言中的指標不能進行偏移和運算,是安全指標。任何程式資料載入記憶體後,在記憶體都有他們的位址,這就是指標。而為了儲存乙個資料在記憶體中的位址,我們就需要指標變數。比如,永遠不要高估自己 這句話是我的座右銘,我想把它寫入程式中,程式一啟動這句話是要載入到記憶體 假設記憶體位...