切片的申明
func TestSliceInit(t *testing.T) { var s0 []int t.Log(len(s0), cap(s0)) s0 = append(s0, 1) t.Log(len(s0), cap(s0)) s1 := []int{1, 2, 3, 4} t.Log(len(s1), cap(s1)) s2 := make([]int, 3, 5) // 长度3,容量5 t.Log(len(s2), cap(s2)) // 只能拜访前三个元素,不能拜访s2[3] t.Log(s2[0], s2[1], s2[2]) s2 = append(s2, 1) // 长度4,容量5 t.Log(len(s2), cap(s2)) // 能够拜访前四个元素,不能拜访s2[4] t.Log(s2[0], s2[1], s2[2], s2[3])}
切片的容量增长
func TestSliceGrowing(t *testing.T) { s := []int{} for i := 0; i < 10; i++ { s = append(s, i) // 容量会翻倍增长 t.Log(len(s), cap(s)) }}
切片共享内容
func TestSliceShareMemory(t *testing.T) { months := []string{"Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sept", "Oct", "Nov", "Dec"} Q2 := months[3:6] //[...] 3 9 t.Log(Q2, len(Q2), cap(Q2)) summer := year[5:8] t.Log(summer, len(summer), cap(summer)) summer[0] = "Unknow" t.Log(Q2) t.Log(months)}
切片的比拟
func TestSliceComparing(t *testing.T) { a := []int{1, 2, 3, 4} b := []int{1, 2, 3, 4} // 切片不能进行比拟 if a == b { t.Log("equal") }}