Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 5 additions & 4 deletions ch1-basic/ch1-03-array-string-and-slice.md
Original file line number Diff line number Diff line change
Expand Up @@ -367,7 +367,7 @@ type SliceHeader struct {
}
```

可以看出切片的开头部分和 Go 字符串是一样的,但是切片多了一个 `Cap` 成员表示切片指向的内存空间的最大容量(对应元素的个数,而不是字节数)。下图是 `x := []int{2,3,5,7,11}` 和 `y := x[1:3]` 两个切片对应的内存结构。
可以看出切片的开头部分和 Go 字符串是一样的,但是切片多了一个 `Cap` 成员表示切片指向的内存空间的最大容量,由​​起始索引位置到 `Data` 末尾​​的元素数量(而不是字节数)决定。下图是 `x := []int{2,3,5,7,11}` 和 `y := x[1:3]` 两个切片对应的内存结构。

![](../images/ch1-10-slice-1.ditaa.png)

Expand All @@ -383,9 +383,10 @@ var (
d = c[:2] // 有 2 个元素的切片, len 为 2, cap 为 3
e = c[0:2:cap(c)] // 有 2 个元素的切片, len 为 2, cap 为 3
f = c[:0] // 有 0 个元素的切片, len 为 0, cap 为 3
g = make([]int, 3) // 有 3 个元素的切片, len 和 cap 都为 3
h = make([]int, 2, 3) // 有 2 个元素的切片, len 为 2, cap 为 3
i = make([]int, 0, 3) // 有 0 个元素的切片, len 为 0, cap 为 3
g = c[1:2] // 有 1 个元素的切片, len 为 1, cap 为 2
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

切片f已经可以说明此行要表达的东西了

h = make([]int, 3) // 有 3 个元素的切片, len 和 cap 都为 3
i = make([]int, 2, 3) // 有 2 个元素的切片, len 为 2, cap 为 3
j = make([]int, 0, 3) // 有 0 个元素的切片, len 为 0, cap 为 3
)
```

Expand Down