Go語言之指標

2021-10-24 09:33:12 字數 1267 閱讀 6177

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

func

main()

可以通過*操作符取出指標值

func

main()

在學習c語言時候乙個經典的示例是通過指標修改變數的值,go也可以通過指標修改變數的值

func

modify1

(x int

)func

modify2

(p *

int)

func

main()

在go語言中對於引用型別的變數,我們在使用的時候不僅要宣告它,還要為它分配記憶體空間,否則我們的值就沒辦法儲存,執行會報panic。如下面的示例

func

main()

輸出

panic: runtime error: invalid memory address or nil pointer dereference
而對於值型別的宣告不需要分配記憶體空間,是因為它們在宣告的時候已經預設分配好了記憶體空間。要分配記憶體,就要用到go語言的兩個內建函式new 和 make

要避免上面的錯誤就要用new 或make函式了

func

main()

fmt.

printf

("type of b: t%\n"

, b)

fmt.

println

(b)}

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

二者都是用來做記憶體分配的;

make只用於slice、map以及channel的初始化,返回的還是這三個引用型別本身;

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

Go語言之GO 語言常量

相對於變數,常量是恆定不變的值,多用於定義程式執行期間不會改變的那些值。常量的宣告和變數宣告非常類似,只是把var換成了const,常量在定義的時候必須賦值。const pi 3.1415 const e 2.7182宣告了pi和e這兩個常量之後,在整個程式執行期間它們的值都不能再發生變化了。多個常...

Go語言之Go語言網路程式設計

go語言的 net 包中有乙個 tcpconn 型別,可以用來建立 tcp 客戶端和 tcp 伺服器端間的通訊通道,tcpconn 型別裡有兩個主要的函式 func c tcpconn write b byte n int,err os.error func c tcpconn read b byt...

Go語言之Go 語言迴圈語句

go 語言提供了以下幾種型別迴圈處理語句 迴圈型別 描述for 迴圈 重複執行語句塊 迴圈巢狀 在 for 迴圈中巢狀乙個或多個 for 迴圈 迴圈控制語句可以控制迴圈體內語句的執行過程。go 語言支援以下幾種迴圈控制語句 控制語句 描述break 語句 經常用於中斷當前 for 迴圈或跳出 swi...