【Go】Go語言學習筆記-4-進階

Go有指針,而後卻沒有指針運算,目標是修改一個傳入函數的參數的值得效率和可能性,所以它們更像是引用而不是C的指針。數組

1.內存分配

Go有兩個內存分配原語,make和new。函數

new分配內存

new(T)分配了零值填充的T類型的內存空間,而且返回其地址,一個*T類型的值。用Go的術語說,它返回了一個指針,指向新分配的類型T的零值。指針

make分配內存

make(T, args)只能建立slice, map和channel,而且返回一個有初始值(非零)的T類型,而不是*T。內存

例如文檔

  • make([]int, 10, 100)分配了100個整數的值,而後用長度10和容量100建立了slice結構指向數組的前10個元素。編譯器

  • new([]int)返回指向新分配的內存的指針,而零值填充的slice結構指向nil的slice值。編譯

構造函數與複合聲明

有時候零值不能知足需求,必需要有一個用於初始化的構造函數,能夠經過複合聲明實現。
從複合聲明中獲取地址,意味着告訴編譯器在堆中分配空間,而不是棧中。效率

2. 定義本身的類型

Go容許定義新德類型,經過關鍵字type實現,例如type foo int。
建立更復雜的類型須要用到struct關鍵字。構造函數

轉換

type類型的轉換。map

組合

文檔里居然沒寫完。

相關文章
相關標籤/搜索