1. 程式人生 > >Go語言學習筆記十一: 切片(slice)

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

操作 容量 方括號 一個 組類型 學習 中學 slice 修改

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

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

定義切片

切片可以使用make函數來定義,也可以像變量聲明一樣創建個未指定大小的切片。

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的。

空(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);

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