mirror of
https://github.com/unknwon/the-way-to-go_ZH_CN.git
synced 2025-08-12 00:11:36 +08:00
7.6
This commit is contained in:
@@ -3,18 +3,18 @@
|
||||
如果想增加 slice 的容量,我们必须创建一个新的更大的 slice 并把原分片的内容都拷贝过来。下面的代码描述了从拷贝 slice 的 copy 方法和向 slice 追加新元素的 append 方法。
|
||||
|
||||
示例 7.12 [copy_append_slice.go](examples/chapter_7/copy_append_slice.go)
|
||||
|
||||
|
||||
package main
|
||||
import "fmt"
|
||||
|
||||
|
||||
func main() {
|
||||
sl_from := []int{1, 2, 3}
|
||||
sl_to := make([]int, 10)
|
||||
|
||||
|
||||
n := copy(sl_to, sl_from)
|
||||
fmt.Println(sl_to)
|
||||
fmt.Printf("Copied %d elements\n", n) // n == 3
|
||||
|
||||
|
||||
sl3 := []int{1, 2, 3}
|
||||
sl3 = append(sl3, 4, 5, 6)
|
||||
fmt.Println(sl3)
|
||||
@@ -44,13 +44,21 @@ func AppendByte(slice []byte, data ...byte) []byte {
|
||||
|
||||
`func copy(dst, src []T) int` copy 方法将类型为 T 的 slice 从源地址 src 拷贝到目标地址 dst,覆盖 dst 的相关元素,并且返回拷贝的元素个数。源地址和目标地址可能会有重叠。拷贝个数是 src 和 dst 的长度最小值。如果 src 是字符串那么元素类型就是 byte。如果你还想继续使用 src,在拷贝技术后执行 src =dst。
|
||||
|
||||
练习 7.9: magnify_slice.go: 给定 `slice s[]int` 和一个 int 类型的因子,扩展 s 使其长度为 `len(s) * factor`。
|
||||
**练习 7.9**
|
||||
|
||||
练习 7.10:filter_slice.go: 用顺序函数过滤容器:s 是前 10 个整形的 slice。构造一个函数 Filter,第一个参数是 s,第二个参数是一个 `fn func(int) bool`,返回满足函数 fn 的元素 slice。通过 fn 测试方法测试当整型值是偶数时的情况。
|
||||
给定 `slice s[]int` 和一个 int 类型的因子,扩展 s 使其长度为 `len(s) * factor`。
|
||||
|
||||
练习 7.11:insert_slice.go:写一个函数 InsertStringSlice 将 slice 插入到另一个 slice 的指定位置。
|
||||
**练习 7.10**
|
||||
|
||||
练习 7.12:remove_slice.go:写一个函数 RemoveStringSlice 将从 start 到 end 索引的元素从 slice 中移除。
|
||||
用顺序函数过滤容器:s 是前 10 个整形的 slice。构造一个函数 Filter,第一个参数是 s,第二个参数是一个 `fn func(int) bool`,返回满足函数 fn 的元素 slice。通过 fn 测试方法测试当整型值是偶数时的情况。
|
||||
|
||||
**练习 7.11**
|
||||
|
||||
写一个函数 InsertStringSlice 将 slice 插入到另一个 slice 的指定位置。
|
||||
|
||||
**练习 7.12**
|
||||
|
||||
写一个函数 RemoveStringSlice 将从 start 到 end 索引的元素从 slice 中移除。
|
||||
|
||||
## 链接
|
||||
|
||||
|
Reference in New Issue
Block a user