golang分配內存有一個make函數,該函數第一個參數是類型,第二個參數是分配的空間,第三個參數是預留分配空間,前兩個參數都很好理解,
對於第三個參數,例如a:=make([]int, 5, 10), len(a)輸出結果是5,cap(a)輸出結果是10,對a[4]進行賦值發現是可以得,
但對a[5]進行賦值發現報錯了,那么這個預留分配的空間要怎么使用呢?預留的空間需要重新切片才可以使用。
package main
import "fmt"
func main(){
a := make([]int, 10, 20)
fmt.Printf("%d, %d\n", len(a), cap(a))
fmt.Println(a)
b := a[:cap(a)]
fmt.Println(b)
}
10, 20
[0 0 0 0 0 0 0 0 0 0]
[0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0]