mirror of
https://github.com/unknwon/the-way-to-go_ZH_CN.git
synced 2025-08-11 19:41:43 +08:00
7.6.7
This commit is contained in:
@@ -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
|
||||
|
Reference in New Issue
Block a user