Browse Source

精校:7.4

Unknwon 2 years ago
parent
commit
640517dbc8
5 changed files with 47 additions and 36 deletions
  1. 1 1
      README_gc.md
  2. 1 1
      eBook/07.3.md
  3. 42 31
      eBook/07.4.md
  4. 1 1
      eBook/07.5.md
  5. 2 2
      eBook/directory.md

+ 1 - 1
README_gc.md

@@ -15,4 +15,4 @@ Golang 编程:245386165
15 15
 
16 16
 |更新日期    |更新内容
17 17
 |----------|------------------
18
-|2015-07-27|7.1 声明和初始化
18
+|2015-07-30|7.4 切片重组(reslice)

+ 1 - 1
eBook/07.3.md

@@ -101,4 +101,4 @@ b) 写一个 SumAndAverage 方法,返回两个 int 和 float32 类型的未命
101 101
 
102 102
 - [目录](directory.md)
103 103
 - 上一节:[切片](07.2.md)
104
-- 下一节:[切片重组](07.4.md)
104
+- 下一节:[切片重组(reslice)](07.4.md)

+ 42 - 31
eBook/07.4.md

@@ -1,37 +1,44 @@
1
-# 7.4 切片重组
1
+# 7.4 切片重组(reslice)
2 2
 
3
-我们已经知道 slice 创建的时候通常比相关数组小,例如
3
+我们已经知道切片创建的时候通常比相关数组小,例如:
4 4
 
5
-	slice1 := make([]type, start_length, capacity)
5
+```go
6
+slice1 := make([]type, start_length, capacity)
7
+```
6 8
 
7
-其中 start_length 作为 slice 初始长度而 capacity 作为相关数组的长度。
9
+其中 `start_length` 作为切片初始长度而 `capacity` 作为相关数组的长度。
8 10
 
9
-这么做的好处是我们的 slice 在达到容量上限后可以扩容。改变 slice 长度的过程称之为切片重组 **reslicing**,做法如下:`slice1 = slice1[0:end]`,其中 end 是新的末尾索引(即长度)。
11
+这么做的好处是我们的切片在达到容量上限后可以扩容。改变切片长度的过程称之为切片重组 **reslicing**,做法如下:`slice1 = slice1[0:end]`,其中 end 是新的末尾索引(即长度)。
10 12
 
11
-将 slice 扩展 1 位可以这么做:`sl = sl[0:len(sl)+1]`
13
+将切片扩展 1 位可以这么做:
12 14
 
13
-slice 可以反复扩展直到占据整个相关数组。
15
+```go
16
+sl = sl[0:len(sl)+1]
17
+```
14 18
 
19
+切片可以反复扩展直到占据整个相关数组。
15 20
 
16 21
 示例 7.11 [reslicing.go](examples/chapter_7/reslicing.go)
17 22
 
18
-    package main
19
-    import "fmt"
20
-    
21
-    func main() {
22
-    	slice1 := make([]int, 0, 10)
23
-    	// load the slice, cap(slice1) is 10:
24
-    	for i := 0; i < cap(slice1); i++ {
25
-    		slice1 = slice1[0:i+1]
26
-    		slice1[i] = i
27
-    		fmt.Printf("The length of slice is %d\n", len(slice1))
28
-    	}
29
-    
30
-    	// print the slice:
31
-    	for i := 0; i < len(slice1); i++ {
32
-    		fmt.Printf("Slice at %d is %d\n", i, slice1[i])
33
-    	}
34
-    }
23
+```go
24
+package main
25
+import "fmt"
26
+
27
+func main() {
28
+	slice1 := make([]int, 0, 10)
29
+	// load the slice, cap(slice1) is 10:
30
+	for i := 0; i < cap(slice1); i++ {
31
+		slice1 = slice1[0:i+1]
32
+		slice1[i] = i
33
+		fmt.Printf("The length of slice is %d\n", len(slice1))
34
+	}
35
+
36
+	// print the slice:
37
+	for i := 0; i < len(slice1); i++ {
38
+		fmt.Printf("Slice at %d is %d\n", i, slice1[i])
39
+	}
40
+}
41
+```
35 42
 
36 43
 输出结果:
37 44
 
@@ -58,18 +65,22 @@ slice 可以反复扩展直到占据整个相关数组。
58 65
 
59 66
 另一个例子:
60 67
 
61
-	var ar = [10]int{0,1,2,3,4,5,6,7,8,9}
62
-	var a = ar[5:7] // reference to subarray {5,6} - len(a) is 2 and cap(a) is 5
68
+```go
69
+var ar = [10]int{0,1,2,3,4,5,6,7,8,9}
70
+var a = ar[5:7] // reference to subarray {5,6} - len(a) is 2 and cap(a) is 5
71
+```
63 72
 
64
-将a重新分片
73
+将 a 重新分片
65 74
 
66
-	a = a[0:4] // ref of subarray {5,6,7,8} - len(a) is now 4 but cap(a) is still 5
75
+```go
76
+a = a[0:4] // ref of subarray {5,6,7,8} - len(a) is now 4 but cap(a) is still 5
77
+```
67 78
 
68
-问题 7.7:
79
+**问题 7.7**
69 80
 
70
-1) 如果 a 是一个 slice,那么 s[n:n] 的长度是多少?
81
+1) 如果 a 是一个切片,那么 `s[n:n]` 的长度是多少?
71 82
 
72
-2) s[n:n+1] 的长度又是多少?          
83
+2) `s[n:n+1]` 的长度又是多少?          
73 84
 
74 85
 ## 链接
75 86
 

+ 1 - 1
eBook/07.5.md

@@ -63,5 +63,5 @@ func AppendByte(slice []byte, data ...byte) []byte {
63 63
 ## 链接
64 64
 
65 65
 - [目录](directory.md)
66
-- 上一节:[切片重组](07.4.md)
66
+- 上一节:[切片重组(reslice)](07.4.md)
67 67
 - 下一节:[字符串、数组和切片的应用](07.6.md)

+ 2 - 2
eBook/directory.md

@@ -47,7 +47,7 @@
47 47
 	- 5.6 [标签与 goto](05.6.md)
48 48
 - 第6章:[函数(function)](06.0.md)
49 49
 	- 6.1 [介绍](06.1.md)
50
-	- 6.2 [参数与返回值](06.2.md)
50
+	- 6.2 [函数参数与返回值](06.2.md)
51 51
 	- 6.3 [传递变长参数](06.3.md)
52 52
 	- 6.4 [defer 和追踪](06.4.md)
53 53
 	- 6.5 [内置函数](06.5.md)
@@ -62,7 +62,7 @@
62 62
 	- 7.1 [声明和初始化](07.1.md)
63 63
 	- 7.2 [切片](07.2.md)
64 64
 	- 7.3 [For-range 结构](07.3.md)
65
-	- 7.4 [切片重组](07.4.md)
65
+	- 7.4 [切片重组(reslice)](07.4.md)
66 66
 	- 7.5 [切片的复制与追加](07.5.md)
67 67
 	- 7.6 [字符串、数组和切片的应用](07.6.md)
68 68
 - 第8章:[Maps](08.0.md)