golang文法總結(十五):數組array與切片slice

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

  • 數組

    數組定義格式樣本:
var a [2]intfmt.Println(a)b := [2]int{2,3}fmt.Println(b)
輸出:[0 0][2 3]
    還可以省略數組長度,編譯器自動推算:
a := [...]int{5,6,7,8}
    還可以使用索引初始化:
a := [...]int{9:1}fmt.Println(a)
輸出:[0 0 0 0 0 0 0 0 0 1]

需要注意的是,數組長度也是數群組類型的一部分,因此長度不同的數群組類型也就不同數組在Go中為實值型別,即給傳遞陣列變數的時候是全複製,如果想傳遞引用,將使用Go特有類型:slice,後面會講到數組可以用==或!=來比較可以使用new建立數組,此時返回的是數組指標:
a := new([10]int)

  • 切片

底層就是數組,多個slice可以在底層可以指向同一個數組可以指定初始長度和容量,注意長度和容量概念不同,長度是指該slice用於存放資料的數組長度,容量是底層數組分配連續記憶體的總長度。當給slice append元素,使得長度超出容量的時候,Go會再建立一個容量為當前容量兩倍的新數組,並將資料拷貝進去。
var s0 []int //和定義數組類似,只是不需要指定長度fmt.Println(s0) //[]a := [10]int{0,1,2,3,4,5,6,7,8,9} //聲明一個數組s1 := a[5:10] //截取數組某一部分fmt.Println(s1) //[5 6 7 8 9]s2 := a[5:] //截取從某個索引開始到數組末尾fmt.Println(s2) //[5 6 7 8 9]s3 := a[:5] //截取從數組開頭開始到某個索引為止fmt.Println(s3) //[0 1 2 3 4]s4 := make([]int,3,10) //建立一個類型為整型數組,長度為3,容量為10的slicefmt.Println(len(s4),cap(s4),s4) //3 10 [0 0 0]s5 := []int{1,2,3,4} //定義並初始化slicefmt.Println(s5) //[1,2,3,4]s6 := a[:] //指向整個a數組fmt.Println(s6) //[0,1,2,3,4,5,6,7,8,9]

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.