一句話總結:切片的底層是陣列,可以理解為切片是動態陣列,注意兩者初始化和函式引數的區別。
陣列需要指定大小,不指定也會根據初始化的自動推算出大小,不可改變
陣列: a := [...]int 或 var a = [...]int
a := [3]int 或 var a = [3]int
切片: a:= int 或 var a = int
a := make(int, 5)
a := make(int, 5, 10)
var s int = int
//var a [...]int = [...]int //error
切片不需要指定大小
值得注意的是: string 型別 的底層是陣列, 是陣列就可以用來切片操作
如//s :="hello world"
var s string = "hello world"
s1 := s[0:len(s)]
fmt.println(s1)
輸出的結果:hello world
陣列需要明確指定大小,切片不需要。陣列是值傳遞,切片是位址傳遞。
golang 陣列和切片的區別
陣列是內建 build in 型別,是一組同型別資料的集合,它是值型別,通過從0開始的下標索引訪問元素值。在初始化後長度是固定的,無法修改其長度。當作為方法的引數傳入時將複製乙份陣列而不是引用同一指標。陣列的長度也是其型別的一部分,通過內建函式len array 獲取其長度。注意 和c中的陣列相比,...
golang中陣列和切片的區別與聯絡
golang中陣列和切片的區別 切片時指標型別,陣列是值型別 陣列的長度是固定的,而切片不是 切片是動態的陣列 切片比陣列多乙個屬性 容量 cap 切片的底層是陣列 既然乙個是指標型別,乙個是值型別,那麼區別體現在 呢?看下這個例子 numbers int for i,e range numbers...
golang 陣列和切片
陣列和切片的建立func main output 1 0 ps 陣列宣告時,所有元素預設值都是0。一般很少這樣做,盡量自己初始化。func main output panic runtime error index out of range goroutine 1 running main.main...