內建函式 make 用來為 slice,map 或 chan 型別分配記憶體和初始化乙個物件(注意:只能用在這三種型別上)
使用make來建立slice,map,chanel說明如下:
// 長度為5,容量為10的slice,slice中的元素是int
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
fmt.
println
(slice_2)
列印結果:
[0 0 0 0 0]
[0 0 0 0 0]
[1,2]
用第三個引數設定該slice的容量(即底層陣列的長度)。如果能夠預足容量,那麼在slice中資料增長的過程中不需要更換底層陣列(附帶拷貝過程),這樣效率更高。
var m_ map
[string
]int
=make
(map
[string
]int
)m_[
"one"]=
1fmt.
println
(m_)
var m map
[string
]int
=map
[string
]int
m["2"]=
2fmt.
println
(m)
列印結果:
map[one:1]
map[1:1 2:2]
根據 size 大小來初始化分配記憶體,不過分配後的 map 長度為 0,如果 size 被忽略了,那麼會在初始化分配記憶體時分配乙個小尺寸的記憶體
管道緩衝區依據緩衝區容量被初始化。如果容量為 0 或者忽略容量,管道是沒有緩衝區的 (?)
go語言常用函式
示例1 1 arr1 int 3 fmt.println arr2 輸出 1,2,3,4,5,6 1 arr1 int 2 arr2 int 4 fmt.println arr3 輸出 1,2,3,4,5,6 copy 用於從乙個陣列切片複製到另乙個陣列切片。如果加入的兩個陣列切片不一樣大,就會按其...
go語言的new和make
golang的new和make主要區別如下 effective go舉了乙個例子,見 對於struct的分配和初始化,除了可以使用new外,還可以這樣做 t 例如 func testalloc t testing.t var t1 t t1 new t fmt.println t1 t2 t fmt...
Go 語言程式設計 make 和 new
make 和 new 都是 golang 的內建函式,作為用於記憶體分配的原語 allocation primitives 其功能相似,卻有著本質的區別。the new built in function allocates memory.the first argument is a type,n...