DAY 8
0

Slice Again

• 可以任意增加陣列內的元素及長度
• 與 array 同樣以 `[]` 定義，但不同的是不用在 `[]` 內寫上數量

``````// 方法1
cats := []string{"BuiBui", "MeiMei"}

// 方法2
func make([]string, len, cap)
``````

slice 裡面包含了三樣東西

1. pointer to the array：會指向底層的 array （沒錯，就是 array）
2. length：slice 中的元素數目
3. capacity： 底層 array 的長度

``````// len = 3, cap = 3
gopher := make([]int, 3) // => [0, 0, 0]

// len = 0, cap = 5
gopher := make([]int, 0, 5) // => []
``````

``````// 醬是不行的
gopher := make([]int, 5, 0) // => error!
``````

append

``````cats := []string{"BuiBui", "MeiMei"}
cats = append(cats, "Peko")
``````

次元切割刀

``````num := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
num = num[1:3]
fmt.Println(num, len(num), cap(num)) // => [2, 3] len = 2, cap = 8

num := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
num = num[:3]
fmt.Println(num, len(num), cap(num)) // => [1, 2, 3], len = 3, cap = 9

num := []int{1, 2, 3, 4, 5, 6, 7, 8, 9}
num = num[3:]
fmt.Println(num, len(num), cap(num)) // => [4, 5, 6, 7, 8, 9], len = 6 , cap = 6
``````

結尾

slice 的介紹到這結束了，如果有任何問題歡迎與我告知 :)