有什么區(qū)別: x := make([]int, 5, 10) x := make([]int, 5) x := [5]int{}我知道m(xù)ake分配一個數(shù)組并返回一個引用該數(shù)組的切片。不明白哪里可以用?我找不到一個很好的例子來澄清這種情況。
1 回答
皈依舞
TA貢獻1851條經(jīng)驗 獲得超3個贊
x := make([]int, 5)制作長度為 5 和容量為 5 的切片(int與長度相同)。
x := make([]int, 5, 10)使切片的int長度為5和10的容量。
x := [5]int{}使得陣列的int長度為5。
切片
如果您需要使用函數(shù)添加比切片容量更多的項目append,go runtime 將分配新的底層數(shù)組并將現(xiàn)有數(shù)組復制到其中。因此,如果您知道切片的估計長度,最好使用顯式容量聲明。一開始它會為底層數(shù)組消耗更多內(nèi)存,但對于許多分配和數(shù)組復制來說是安全的 CPU 時間。
你可以探索如何len和cap改變 while append,使用這個簡單的測試Go playground
每當cap值改變時,新數(shù)組分配
數(shù)組
數(shù)組大小是固定的,因此如果您需要增加數(shù)組,您必須創(chuàng)建一個具有新長度的新數(shù)組,然后自己將舊數(shù)組復制到其中。
在 go 中有一些關于切片和數(shù)組的很棒的文章:
http : //blog.golang.org/go-slices-usage-and-internals
http://blog.golang.org/slices
- 1 回答
- 0 關注
- 238 瀏覽
添加回答
舉報
0/150
提交
取消
