1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| a:=[]int{1,2,3,4,5,6} a[l1:l2]//技巧,从0开始从前往后数,留头去尾 cap计算 = 长度 6 - l1 = 3 len计算 = l2 - l1
//例子 a := [...]int{0, 1, 2, 3, 4, 5, 6} s0 := a[:] // 7,7 | 0, 1, 2, 3, 4, 5, 6 s1 := s0[:] // 7,7 | 0, 1, 2, 3, 4, 5, 6 s2 := s1[1:3] // 2,6 | 1, 2 s3 := s1[3:] // 4,4 | 3, 4, 5, 6 s4 := s0[3:5] // 2,4 | 3, 4 s5 := s4[:2:2] // 2,2 | 3, 4 s6 := append(s4, 77) //3,4 | 3,4,77 同时s6容量充足,依然使用s0作为底层,append s6会影响到 s0 s0 = 0,1,2,3,4,77,6 s7 := append(s5, 88) //3,4 | 3,4,88 cap=4是因为s5的容量达到上线,append扩容,原容量<1024,容量*2,扩容之后分配新的数组,所以不会对s0产生影响 s8 := append(s7, 66) // 4,4 | 3,4,88,66 s3[1] = 99 // 4,4 | 3,99,77,6, s0 = 0,1,2,3,99,77,6
|