七、Go切片

七、Go語言切片(Slice)

Go 語言切片是對數(shù)組的抽象。

Go 數(shù)組的長度不可改變,在特定場景中這樣的集合就不太適用,Go中提供了一種靈活,功能強悍的內置類型切片("動態(tài)數(shù)組"),與數(shù)組相比切片的長度是不固定的,可以追加元素,在追加時可能使切片的容量增大。

定義切片

  • 通過聲明一個未制定大小的數(shù)組來定義切片:
var identifier []int
  • 使用make()函數(shù)創(chuàng)建切片:
var slice1 []type = make([]type, len)

//也可以簡寫為

slice1 := make([]type, len)

//使用參數(shù)capacity定義容量

make([]T, length, capacity)

初始化切片

  • 直接初始化:
s :=[] int {1,2,3 } 
//直接初始化切片s = {1,2,3},此時len = cap = 3
  • 引用數(shù)組:
s := arr[:] 
//初始化切片s為數(shù)組arr的引用,:前后可以傳索引,該方法也可以引用切片生成一個新的切片

切片的len()和cap()

切片是可索引的,并且可以由 len() 方法獲取長度。

切片提供了計算容量的方法 cap() 可以測量切片最長可以達到多少。

空切片

一個切片在未初始化之前默認為nil,長度為0。

package main

import "fmt"

func main() {
    var numbers []int

    printSlice(numbers)

    if(numbers == nil){
        fmt.Printf("切片是空的")
    }
}

func printSlice(x []int){
    fmt.Printf("len=%d cap=%d slice=%v\n",len(x),cap(x),x)
}
//輸出
len=0 cap=0 slice=[]
切片是空的

切片截取

即使用[lower_index:upper_index]對切片進行截取,:兩邊都不是必傳參數(shù)。

append() 和 copy()函數(shù)

使用append()添加元素,使用copy()函數(shù)復制切片到一個新的切片。

package main

import "fmt"

func main() {
   var numbers []int
   printSlice(numbers)

   /* 允許追加空切片 */
   numbers = append(numbers, 0)
   printSlice(numbers)

   /* 向切片添加一個元素 */
   numbers = append(numbers, 1)
   printSlice(numbers)

   /* 同時添加多個元素 */
   numbers = append(numbers, 2,3,4)
   printSlice(numbers)

   /* 創(chuàng)建切片 numbers1 是之前切片的兩倍容量*/
   numbers1 := make([]int, len(numbers), (cap(numbers))*2)

   /* 拷貝 numbers 的內容到 numbers1 */
   copy(numbers1,numbers)
   printSlice(numbers1)   
}

func printSlice(x []int){
   fmt.Printf("len=%d cap=%d slice=%v\n",len(x),cap(x),x)
}
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 切片slice 本身并不是數(shù)組,它指向底層的數(shù)組 作為變長數(shù)組的替代方案,可關聯(lián)底層數(shù)組的局部或全部 數(shù)據(jù)類型為引...
    kaxi4it閱讀 537評論 0 0
  • 此處數(shù)組只講Go語言中和C語言不一樣的地方 格式不同:Go語言定義數(shù)組的格式:var ages [3]int 定義...
    AuglyXu閱讀 1,378評論 0 0
  • Go語言數(shù)組數(shù)組 一維數(shù)組 數(shù)組定義格式: var arr [3]int 數(shù)組的初始化方式先定義后初始化注意點:G...
    喝酸奶要舔蓋__閱讀 556評論 0 2
  • 出處---Go編程語言 歡迎來到 Go 編程語言指南。本指南涵蓋了該語言的大部分重要特性 Go 語言的交互式簡介,...
    Tuberose閱讀 18,717評論 1 46
  • 1. 滴滴,伴隨著手機的一聲提示音響起,提示燈開始不停的閃爍,我拿起手機,是那個曾經(jīng)那么熟悉的名字,發(fā)來一條微信:...
    石橋橋橋橋閱讀 370評論 0 0

友情鏈接更多精彩內容