golang中陣列和切片的區別與聯絡

2021-10-02 08:03:55 字數 443 閱讀 2502

golang中陣列和切片的區別:

切片時指標型別,陣列是值型別

陣列的長度是固定的,而切片不是(切片是動態的陣列)

切片比陣列多乙個屬性:容量(cap)

切片的底層是陣列

既然乙個是指標型別,乙個是值型別,那麼區別體現在**呢?

看下這個例子

numbers := int

for i, e := range numbers else

} fmt.println(numbers)

結果為[22 3 6 10 15 21]

將切片換為陣列:

numbers := [...]int

for i, e := range numbers else

} fmt.println(numbers)

Golang中陣列和切片的區別

一句話總結 切片的底層是陣列,可以理解為切片是動態陣列,注意兩者初始化和函式引數的區別。陣列需要指定大小,不指定也會根據初始化的自動推算出大小,不可改變 陣列 a int 或 var a int a 3 int 或 var a 3 int 切片 a int 或 var a int a make in...

golang 陣列和切片的區別

陣列是內建 build in 型別,是一組同型別資料的集合,它是值型別,通過從0開始的下標索引訪問元素值。在初始化後長度是固定的,無法修改其長度。當作為方法的引數傳入時將複製乙份陣列而不是引用同一指標。陣列的長度也是其型別的一部分,通過內建函式len array 獲取其長度。注意 和c中的陣列相比,...

golang 陣列和切片

陣列和切片的建立func main output 1 0 ps 陣列宣告時,所有元素預設值都是0。一般很少這樣做,盡量自己初始化。func main output panic runtime error index out of range goroutine 1 running main.main...