首頁  >  文章  >  後端開發  >  golang 指針怎麼用

golang 指針怎麼用

(*-*)浩
(*-*)浩原創
2019-12-31 13:41:082461瀏覽

golang 指針怎麼用

指標的基本意義是儲存某些值所在的記憶體位址。                                                                 中     的變數必然可以取出地址。 變量,就是一塊記憶體區域中儲存的值[1]。不只我們熟悉的 var x int 中的 x 是變量,一個比較複雜的表達式也可以表示一個變量,例如sliceA[0],mapB["key"],以及structC.FieldD。也就是說,他們都可以有自己的指針。

當我們需要修改結構體的變數內容的時候,方法傳入的結構體變數參數需要使用指針,也就是結構體的位址,需要修改map中的架構體的變數的時候也需要使用結構體位址作為map的value。

 Go 可以直接新建struct 的指標

在golang 中,我們可以透過ptr := &A{Value: 1},就得到了一個結構體A 值的指標;但在C 中就無法透過單獨的賦值語句得到:

typedef struct {    
int value;
} 
A;A *ptr1; // 无法给 ptr 所指的值赋值
A *ptr2 = &A{1}; // 没有这样的语法
A a = {1}; // 再通过 &a 可以得到指针
如果說這個差異只是語法上的表象,另外一個差異可能就是事關bug 的差別了。

2. Go 中可以安全地傳回局部變數的指標

#在上面的C 程式碼舉例中,我們確實可以宣告一些變量,但如果這些宣告是在一個方法內完成的,例如:

A *init(){
    A *ptr;
    return ptr;}

A *init(){
    A a;
    return &a;}

那麼,這個宣告出來的局部變量,是一種自動變數(automatic variable[3]),原方法,也就是init() 方法,結束後,這些自動變數就「消失」了。

以上是golang 指針怎麼用的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn