go內置函數new和make的區別

func new(Type) *Type

new 內建函數分配內存。 其第一個實參爲類型,而非值,其返回值爲指向該類型的新分配的零值的指針。

func make(t Type, size ...IntegerType) Type

make 內建函數分配並初始化一個類型爲且僅爲slice、map、或chan的對象。 與 new 相同的是,其第一個實參爲類型,而非值。不同的是,make 的返回類型 與其參數相同,而非指向它的指針。其具體結果取決於具體的類型:

slice:參數size指定了它的長度,該切片的容量等於它的長度。第二個整數實參可用來指定不同的容量,但是容量值不能小於長度值。例如,make([]int, 0, 10) 會分配一個長度爲0, 容量爲10的切片。

map:一個空的map可以被分配足夠的空間來存儲指定數量的元素。參數size可以省略,在這種情況下,會分配一個小的起始大小。

channel:channel的緩存根據指定的緩存容量初始化。若 size 爲零或被省略,該信道即爲無緩存的。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章