Golang中陣列和切片的區別

2021-09-23 22:19:08 字數 597 閱讀 6922

一句話總結:切片的底層是陣列,可以理解為切片是動態陣列,注意兩者初始化和函式引數的區別。

陣列需要指定大小,不指定也會根據初始化的自動推算出大小,不可改變 

陣列: 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...