Skip to content

Commit e7c20bb

Browse files
committed
update lesson3 and lesson10
1 parent 276c73c commit e7c20bb

File tree

4 files changed

+103
-7
lines changed

4 files changed

+103
-7
lines changed

workspace/lesson10/func_array.go

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package main
2+
3+
import "fmt"
4+
import "reflect"
5+
6+
func sum(array [5]int, size int) int{
7+
sum := 0
8+
for i:=0; i<size; i++ {
9+
sum += array[i]
10+
}
11+
return sum
12+
}
13+
14+
func sumSlice(array []int, size int) int{
15+
sum := 0
16+
for i:=0; i<size; i++ {
17+
sum += array[i]
18+
}
19+
return sum
20+
}
21+
22+
func main() {
23+
a := [5]int {1, 2, 3, 4, 5} // a := [...]int{1, 2, 3, 4, 5}也可以去调用sum,编译器会自动推导出a的长度5
24+
fmt.Println("type of a:", reflect.TypeOf(a)) // 输出type of a: []int,是一个slice类型
25+
ans := sum(a, 5)
26+
fmt.Println("ans=", ans)
27+
28+
b := []int{1, 2, 3, 4, 5}
29+
ans2 := sumSlice(b, 5)
30+
fmt.Println("ans2=", ans2)
31+
32+
array := [...]int {1}
33+
fmt.Println("type of array:", reflect.TypeOf(array)) // type of array: [1]int,是一个数组类型
34+
fmt.Println("array=", array)
35+
}

workspace/lesson10/multi_array.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,12 @@ func main() {
4343
fmt.Printf("row %d is ", index) // index的值是0,1,表示二维数组的第1行和第2行
4444
fmt.Println(twoDimArray[index])
4545
}
46+
for row_index, row_value := range twoDimArray {
47+
for col_index, col_value := range row_value {
48+
fmt.Printf("twoDimArray[%d][%d]=%d ", row_index, col_index, col_value)
49+
}
50+
fmt.Println()
51+
}
4652

4753
// 可以直接取二维数组的某一行完整数据出来
4854
oneDimArray := array1[0]

workspace/lesson10/readme.md

Lines changed: 56 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@
4040
* 不指定数组大小,编译器根据赋的值自行推导
4141

4242
```go
43-
var balance1 []int = []int{1,2}
44-
var balance2 = []int{1,2,3}
45-
balance3 := []int{1, 2}
43+
var balance1 []int = [...]int{1,2} // 等价于[2]int{1,2}
44+
var balance2 = [...]int{1,2,3}
45+
balance3 := [...]int{1, 2}
4646
fmt.Println("balance1=", balance1)
4747
fmt.Println("balance2=", balance2)
4848
fmt.Println("balance3=", balance3)
@@ -107,7 +107,7 @@
107107
fmt.Println("array2=", array2)
108108
```
109109

110-
* append赋值,数组的大小不能提前指定
110+
* append赋值,slice切片类型,不能算数组。参见后面lesson13里的slice类型介绍
111111

112112
```go
113113
twoDimArray := [][]int{}
@@ -142,14 +142,18 @@
142142
for index := range twoDimArray {
143143
fmt.Printf("row %d is ", index) //index的值是0,1,表示二维数组的第1行和第2行
144144
fmt.Println(twoDimArray[index])
145+
}
146+
for row_index, row_value := range twoDimArray {
147+
for col_index, col_value := range row_value {
148+
fmt.Printf("twoDimArray[%d][%d]=%d ", row_index, col_index, col_value)
149+
}
150+
fmt.Println()
145151
}
146152
```
147153

148154
* 注意事项
149155

150-
* 多维数组的每一维度的大小可以不相同,比如二维数组的第0行和第1行的size可以不同。
151-
152-
下例里的第0行size是3,第1行size是2。如果直接访问twoDimArray\[2][2]会报错
156+
* 多维动态数组(slice类型)的每一维度的大小可以不相同,比如下例里的第0行size是3,第1行size是2。如果直接访问twoDimArray\[2][2]会报错。slice类型的介绍参见lesson13
153157

154158
```go
155159
twoDimArray := [][]int{}
@@ -161,5 +165,50 @@
161165
twoDimArray = append(twoDimArray, row2)
162166
fmt.Println("twoDimArray=", twoDimArray)
163167
```
168+
169+
* 数组作为函数参数进行传递
164170

171+
* 如果数组作为函数参数,实参和形参的定义必须相同,要么都是长度相同的数组,要么都是slice类型
172+
173+
```go
174+
package main
175+
176+
import "fmt"
177+
import "reflect"
178+
179+
func sum(array [5]int, size int) int{
180+
sum := 0
181+
for i:=0; i<size; i++ {
182+
sum += array[i]
183+
}
184+
return sum
185+
}
186+
187+
func sumSlice(array []int, size int) int{
188+
sum := 0
189+
for i:=0; i<size; i++ {
190+
sum += array[i]
191+
}
192+
return sum
193+
}
194+
195+
func main() {
196+
a := [5]int {1, 2, 3, 4, 5} // a := [...]int{1, 2, 3, 4, 5}也可以去调用sum,编译器会自动推导出a的长度5
197+
fmt.Println("type of a:", reflect.TypeOf(a)) // type of a: [5]int
198+
ans := sum(a, 5)
199+
fmt.Println("ans=", ans)
200+
201+
b := []int{1, 2, 3, 4, 5}
202+
ans2 := sumSlice(b, 5)
203+
fmt.Println("ans2=", ans2)
204+
205+
array := [...]int {1}
206+
fmt.Println("type of array:", reflect.TypeOf(array)) // type of array: [1]int,是一个数组类型
207+
fmt.Println("array=", array)
208+
}
209+
```
210+
211+
* 值传递和引用传递
212+
213+
165214

workspace/lesson5/readme.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
* 算术运算符
44
* 加+, 减-, 乘*,除 /, 模%, 自增++, 自减--
5+
6+
* go里的除法/和C++里一样,如果是2个整数相除,结果还是整数
7+
8+
```go
9+
fmt.Println("6/5=", 6/5) // 结果是1
10+
```
511
* 关系运算符
612
* 相等==
713
* 不等!=

0 commit comments

Comments
 (0)