Unknwon преди 11 години
родител
ревизия
c01f18f8e4
променени са 1 файла, в които са добавени 27 реда и са изтрити 0 реда
  1. 27 0
      eBook/07.6.md

+ 27 - 0
eBook/07.6.md

@@ -110,4 +110,31 @@ func SearchStrings(a []string, x string) int
 
 ## 7.6.7 append 函数常见操作
 
+我们在第 7.5 节提到的 append 非常有用,它能够用于各种方面的操作:
+
+1. 将切片 b 的元素追加到切片 a 之后:`a = append(a, b...)`
+2. 复制切片 a 的元素到新的切片 b 上:
+
+    ```go
+    b = make([]T, len(a))
+    copy(b, a)
+    ```
+
+3. 删除位于索引 i 的元素:`a = append(a[:i], a[i+1:]...)`
+4. 切除切片 a 中从索引 i 至 j 位置的元素:`a = append(a[:i], a[j:]...)`
+5. 为切片 a 扩展 j 个元素长度:`a = append(a, make([]T, j)...)`
+6. 在索引 i 的位置插入元素 x:`a = append(a[:i], append([]T{x}, a[i:]...)...)`
+7. 在索引 i 的位置插入长度为 j 的新切片:`a = append(a[:i], append(make([]T, j), a[i:]...)...)`
+8. 在索引 i 的位置插入切片 b 的所有元素:`a = append(a[:i], append(b, a[i:]...)...)`
+9. 取出位于切片 a 最末尾的元素 x:`x, a = a[len(a)-1], a[:len(a)-1]`
+10. 将元素 x 追加到切片 a:`a = append(a, x)`
+
+因此,您可以使用切片和 append 操作来表示任意可变长度的序列。
+
+从数学的角度来看,切片相当于向量,如果需要的话可以定义一个向量作为切片的别名来进行操作。
+
+如果您需要更加完整的方案,可以学习一下 Eleanor McHugh 编写的几个包:[slices](http://github.com/feyeleanor/slices)、[chain](http://github.com/feyeleanor/chain) 和 [lists](http://github.com/feyeleanor/lists)。
+
+## 7.6.8 切片和垃圾回收
+
 182