Skip to content

Commit f4810f2

Browse files
committed
update
1 parent 52a51e9 commit f4810f2

File tree

3 files changed

+45
-17
lines changed

3 files changed

+45
-17
lines changed

workspace/lesson19/readme.md

Lines changed: 33 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@
1818
}
1919

2020
func main() {
21-
/*开启一个goroutine去执行hello函数*/
22-
go hello()
23-
fmt.Println("main end")
21+
/*开启一个goroutine去执行hello函数*/
22+
go hello()
23+
fmt.Println("main end")
2424
}
2525
```
2626

@@ -64,6 +64,10 @@
6464

6565
* 定义:channel是一种类型,默认值是nil。channel是引用类型,如果作为函数参数,是传引用。
6666

67+
多个goroutine之间,可以通过channel来通信,一个goroutine可以发送数据到指定channel,其它goroutine可以从这个channel里接收数据。
68+
69+
channel就像队列,满足FIFO原则,定义channel的时候必须指定channel要传递的元素类型。
70+
6771
* 语法:
6872

6973
```go
@@ -85,11 +89,34 @@
8589
ch8 := make(chan struct_type)
8690
```
8791

88-
* 示例:
92+
* 使用:channel有3种操作,发送数据,接收数据和关闭channel。发送和接收都是用**<-**符号
8993

90-
* 使用
94+
* 发送值到通道:channel <- value
9195

92-
96+
```go
97+
ch := make(chan int)
98+
ch <- 10 // 把10发送到ch里
99+
```
100+
101+
* 从通道接收值:value <- channel
102+
103+
```go
104+
ch := make(chan int)
105+
x := <-ch // 从通道ch里接收值,并复制给变量x
106+
<-ch // 从通道里接收值,不做其它处理
107+
```
108+
109+
* 关闭通道
110+
111+
```go
112+
ch := make(chan int)
113+
close(ch) // 关闭通道
114+
```
115+
116+
* 缓冲区:channel默认没有缓冲区,可以在定义channel的时候指定缓冲区长度,也就是缓冲区可以存储的元素个数
117+
118+
* 遍历通道
119+
* 单向通道:指定通道方向
93120

94121
## 并发同步和锁
95122

workspace/lesson3/readme.md

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -89,33 +89,33 @@
8989
9090
* 变量类型
9191
92-
* 数值:整数,浮点数,复数
92+
* 数值:整数,浮点数,复数,默认值是0
9393
94-
* bool
94+
* bool,默认值是false
9595
96-
* 字符串
96+
* 字符串,默认值是空串""
9797
98-
* 指针:var a *int
98+
* 指针:var a *int,默认值是nil
9999
100100
```go
101101
num := 100
102102
var a * int = &num
103103
```
104104
105-
* 数组:var a []int
105+
* 数组:var a []int,默认值是nil
106106
107107
```go
108108
var a []int = []int{1,2}
109109
list := [6]int{1,2} //size为6的数组,前面2个元素是1和2,后面的是默认值0
110110
```
111111
112-
* map:var a map[string] int
112+
* map:var a map[string] int,默认值是nil
113113
114114
```go
115115
dict := map[string] int{"a":1, "b":2}
116116
```
117117
118-
* 函数:var a func(string) int
118+
* 函数:var a func(string) int,默认值是nil
119119
120120
```go
121121
function := func(str string) string {
@@ -125,7 +125,7 @@
125125
fmt.Println("result=", result)
126126
```
127127
128-
* 结构体: var instance Struct
128+
* 结构体: var instance Struct,默认值是nil
129129
130130
```go
131131
type Circle struct {
@@ -136,7 +136,7 @@
136136
c1.radius = 10.00
137137
```
138138
139-
* channel:var a chan int
139+
* channel:var a chan int // 通道,默认值是nil
140140
141-
* 接口:var a error // error是接口
141+
* 接口:var a error // error是接口interface,默认值是nil
142142

workspace/lesson8/func_advance.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ var getSquareRoot2 = func(x float64) float64 {
1717
type callback_func func(int) int
1818

1919

20+
// function calValue accepts a function variable cb as its second argument
2021
func calValue(x int, cb callback_func) int{
2122
fmt.Println("[func|calValue]")
2223
return cb(x)
@@ -35,6 +36,6 @@ func main() {
3536
fmt.Println("result2=", result2)
3637

3738
value := 81
38-
result3 := calValue(value, realFunc)
39+
result3 := calValue(value, realFunc) // use function realFunc as argument of calValue
3940
fmt.Println("result3=", result3)
4041
}

0 commit comments

Comments
 (0)