1. 程式人生 > >go語言常用函式:make

go語言常用函式:make

轉自

簡介

內建函式 make 用來為 slice,map 或 chan 型別分配記憶體和初始化一個物件(注意:只能用在這三種類型上)

跟 new 類似,第一個引數也是一個型別而不是一個值,跟 new 不同的是,make 返回型別的引用而不是指標,而返回值也依賴於具體傳入的型別

make()函式在golang的程式碼如下:

func make(t Type,size IntegerType) Type

程式碼

使用make來建立slice,map,chanel說明如下:

slice

var slice_ []int = make([]int,5,10)
fmt.Println(slice_)

var
slice_1 []int = make([]int,5) fmt.Println(slice_1) var slice_2 []int = []int{1,2} fmt.Println(slice_2)

列印結果:

[0 0 0 0 0]
[0 0 0 0 0]
[1,2]

在建立slice時第一個引數用於確定初始化該slice的大小該slice中的值為零值,第三個引數用於確定該slice的長度

如果我們建立該slice時就能確定該slice最多隻會裝多大的資料量時就可以使用第三個引數固定該slice的長度,這樣做的就會免去如果slice的資料超出內部所指向的array的最大長度時對array資料的轉移,可以提高效率

map

var m_ map[string]int = make(map[string]int)
m_["one"] = 1
fmt.Println(m_)

var m map[string]int = map[string]int{"1":1}
m["2"] = 2
fmt.Println(m)

列印結果:

map[one:1]
map[1:1 2:2]

根據 size 大小來初始化分配記憶體,不過分配後的 map 長度為 0,如果 size 被忽略了,那麼會在初始化分配記憶體時分配一個小尺寸的記憶體

chanel

管道緩衝區依據緩衝區容量被初始化。如果容量為 0 或者忽略容量,管道是沒有緩衝區的 (?)