Go語言學習筆記十一: 切片(slice)

Go語言學習筆記十一: 切片(slice)

切片這個概念我是從python語言中學到的,當時感受這個東西真的比較好用。不像java語言寫起來就比較繁瑣。不過我以爲將來java語法也會支持的。java

定義切片

切片能夠使用make函數來定義,也能夠像變量聲明同樣建立個未指定大小的切片。python

var x []int = make([]int, 3);
y := make([]int, 3);
z := []int {1, 2, 3};

make有三個參數,第一個是類型(數組類型,因此帶方括號),第二個是長度len,第三個是容量cap。長度好理解,就是值的多少。而容量就很差理解了,容量是爲了自動擴容次數減小而設計的,爲了減小擴容的次數,你能夠上來就設置大些。數組

切片操做

s := arr[:]
s := arr[1:2]
s := arr[1:]
s := arr[:2]

len() 和 cap() 函數

這個兩個函數爲了獲得切片的len和cap的。app

空(nil)切片

一個切片在未初始化以前默認爲 nil,長度爲 0。函數

append() 和 copy() 函數

append是往原有切片中增長元素。而copy是複製原有切片,若是不復制,那麼修改新的切片內容,原有對應的元素也會被修改。學習

var x []int

x = append(x, 1);
x = append(x, 2, 3, 4);

y := make([]int, len(x), cap(x) * 2)

copy(y, x);
相關文章
相關標籤/搜索