go語言學習 陣列切片的建立和使用方法

2021-08-08 19:30:23 字數 1535 閱讀 6567

陣列切片就像乙個指向陣列的指標,它擁有自己的資料結構,不僅僅是指標,陣列切片的資料結構可以抽象為以下三個變數:

乙個指向原生陣列的指標

陣列切片的元素個數

陣列切片已分配的儲存空間

從底層實現來看,陣列切片實際上還是通過使用陣列來管理元素,這個有點像c++中陣列與vector的關係,並且可以被隨意傳遞而不會導致所管理的元素被重複複製

package arrslice

import "fmt"

//建立陣列切片主要有兩種方法-基於陣列建立和直接建立

func printarr(myslice int )

fmt.println("\n")

}//基於陣列建立

func creatarrslicefromarr()

//將陣列arr的所有元素都給陣列切片賦值

var myslice1 int = arr[:]

printarr(myslice1)

//將陣列arr的前五個元素給陣列切片賦值

var myslice2 int = arr[:5]

printarr(myslice2)

//將陣列arr的從第五個元素之後的元素賦值給陣列切片

var myslice3 int = arr[5:]

printarr(myslice3)

}//直接建立

func creatarrslice()

printarr(myslice3)

}//基於陣列切片建立陣列切片

func createarrslicefromslice()

myslice2 := myslice1[:]

printarr(myslice2)

} //建立乙個初始元素個數為5的陣列切片,元素初始值為0, 並預留10個元素的儲存空間

var myslice1 = make(int,5,20)

var myslice2 = int

fmt.println("len(myslice1) = ",len(myslice1),"\n")

fmt.println("cap(myslice1) = ",cap(myslice1),"\n")

//元素追加

//直接在陣列切片後面追加元素

printarr(myslice1)

//直接在陣列切片後追加另外乙個陣列切片

}//通過copy函式可以直接對陣列切片進行拷貝,但是如果兩個陣列切片不一樣大,就會按照其中小的那個切片大小來複製

func slicecopy()

myslice2 := int

copy(myslice1,myslice2)

printarr(myslice1)

}

**執行結果:

go語言學習 陣列 切片 map

go語言中陣列的特點 陣列的長度是固定的,並且長度也是陣列型別的一部分 是值型別,在賦值或者作為引數傳遞時,會複製整個陣列,而不是指標 定義陣列的語法 var arr1 5 int 5 int 未初始化的值,就預設初始化為該型別的預設值 var arr2 int 3 int 長度可由初始化的元素個數...

GO語言學習 切片

切片的長度可以用len獲得,容量由cap獲得.s1 make int,5 len s1 可以得到長度為5,cap s1 可以得到容量為5 s2 make int,5,8 len s2 可以得到長度為5,cap s2 可以得到容量為8 在s1中我沒有用make說明此切片的容量,因此他的容量和長度相等都...

go語言學習 四 陣列和切片

在go語言中,陣列和切片都是集合型別,他們都是用來儲存同一種型別的元素。1.陣列型別的長度是固定的,而切片型別的長度是可變長的。如下面 宣告乙個長度為5的陣列s1和長度為5的切片s2,s1 5 int s2 int但是s1是不可變的,而s2是可變的,可以增加元素,長度隨著元素數量而增長。因此陣列是乙...