Lesson 12 — Array & Slice
Slice anatomy · Sharing pitfall · Tricks playground
Module 1 — Slice anatomy & append growth
Slice là struct 3 field (ptr/len/cap) trỏ vào một underlying array.
Click append để thêm phần tử và xem khi nào Go phải re-allocate.
Quy ước màu:
trong
len (truy cập được) trong
cap nhưng > len (slot dự phòng) vừa append/grow
Slice header:
Datanil
Len0
Cap0
Underlying array:
// click "append" để bắt đầu
Module 2 — Slice sharing pitfall
Khi t := s[a:b], hai slice cùng trỏ về một array.
Sửa t[i] = sửa s[a+i]. Append vào t có thể ghi đè vùng của s.
Underlying array:
Bắt đầu với
s := []int{1, 2, 3, 4, 5}. Tạo t để xem chia sẻ.
// click một button để bắt đầu
Module 3 — Slice tricks playground
Chọn operation, nhập slice và tham số, ấn Run để xem step-by-step.