go語言數組和slice精解

在上一篇文章中,我們學習了go語言的字符串相關知識,接下來,我們將學習go語言的數組和slice的一些知識點。

一、數組

其實go語言中的數組很好理解,除了語法不一樣,就是編程語言中的一般概念的數組。數組的初始化預發:

//定義一個含有三個元素值爲0的整型數組
var arr [3]int = [3]int{}  //方式1
arr := [3]int{}   //方式2
arr := [...]int{0,0,0}  //方式3

數組最大的一個特點是需要指定一個容量,數組達到最大容量之後,再給數組追加數據,就會panic。

二、slice

其實slice和數組很相似,其中之一的不同點是,slice沒有固定長度。

slice的結構如下圖:

從slice的結構圖可以看出,其實slice中存儲的是一個底層數組元素的地址,而不是真實的數據。因此,程序對slice中元素的修改會直接同步到底層數組上面。也正是因爲slice存儲的是元素地址,而不是具體值,所以無法直接判斷兩個slice是否相等。因爲比較兩個slice的時候,可能底層的數組值已經被其他goruntine修改。

slice的初始化也是比較簡單的,如:

//初始化一個長度爲2,容量爲10的整型slice
arr := make([]int,2,10)
//初始化一個長度爲2,容量爲2的整型slice
arr := []int{1,2}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章