在上一篇文章中,我們學習了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}