golang筆記——slice

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

一、切片的定義

  我們可以從數組或者切片來初始化一個新的切片,也可以直接通過 make 來初始化一個所有元素為預設零值的切片。

//1、通過數組來初始化切片    arr := [...]int{1, 2, 3, 4, 5}    slice1 := arr[:]   // [1,2,3,4,5]    slice2 := arr[2:4] // [3,4]    slice3 := arr[:4]  // [1,2,3,4]    slice4 := arr[2:]  // [3,4,5]    //2、通過切片來初始化切片    slice5 := slice1[3:] //[4,5]    //3、直接初始化。可以通過 make 來初始化,格式為 make([]int, len, cap),所有的元素初始化為預設零值;也可以直接初始化。    slice6 := make([]int, 3, 6) // [0,0,0]    slice7 := []int{1, 2, 3, 4, 5} // [1,2,3,4,5]

 

二、切片的特點

  slice 有點類似 C++ 中的 vector,都是可變長數組,有容量的概念,但是也有很多不同,如 slice 是基於數組的(該數組稱為底級數組),slice 的長度是從底級數組中取出來的元素個數,容量是底級數組的最大索引與取出元素的最小索引的差值。array 是實值型別,但 slice 卻是參考型別。

func func1(s []int) {    s[0] *= 10 //會修改原切片的值}func func2(s []int) {    for _, v := range s { //不會修改原切片的值,因 for ... range 是唯讀        v *= 10    }}func func3(s []int) {    for i := 0; i < len(s); i++ { //會修改原切片的值        s[i] *= 10    }}func main() {    s := []int{1, 2, 3, 4, 5}    //func1(s) // 10,2,3,4,5,    //func2(s) //1,2,3,4,5,    //func3(s) //10,20,30,40,50,    for _, v := range s {        println(v, ",")    }}

 

三、切片的操作

  切片的操作比數組複雜一些,因為切片是可變長的,而且有容量的概念。當切片容量不夠時,它會以2倍率來擴張。

1、擷取切片長度:len(slice)

2、擷取切片容量:cap(slice)

3、為切片追加元素:slicename = append(slicename, element1, element2,...)  

  該函數是可變參函數,可變參部分也可傳入另一個切片,形式為 slicename = append(slicename, slicename2...) ,可以參考可變參函數的用法。其實之前我一直疑惑為什麼要再賦值給原切片,其實是因為,但append函數調用時,如果切片容量不夠的話,會建立一個新的切片變數,這應該也就是為什麼要賦值給原切片的原因吧。

4、切片沒有提供刪除元素的方法,但可以通過擷取子切片的方式來達成此目的,但無法直接的從中間刪除元素;也不能從中間插入元素。

5、切片的複製: copy(slice1, slice2)

  如果傳入的索引位置 大於等於切片的長度,則

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.