File tree Expand file tree Collapse file tree 2 files changed +47
-2
lines changed Expand file tree Collapse file tree 2 files changed +47
-2
lines changed Original file line number Diff line number Diff line change
1
+ package main
2
+
3
+ import "fmt"
4
+
5
+ type Cat struct {
6
+ name string
7
+ age int
8
+ }
9
+
10
+ func fetchChannel (ch chan Cat ) {
11
+ fmt .Println (<- ch )
12
+ }
13
+
14
+ func main () {
15
+ ch := make (chan Cat )
16
+ a := Cat {"yingduan" , 1 }
17
+ go fetchChannel (ch )
18
+ ch <- a
19
+ fmt .Println ("end" )
20
+ }
Original file line number Diff line number Diff line change 8
8
9
9
* 语法:go 函数名([ 参数列表] ),示例代码如下:
10
10
11
- ```
11
+ ``` go
12
12
package main
13
13
14
14
import " fmt"
24
24
}
25
25
```
26
26
27
+
28
+
27
29
* Go会为main()函数创建一个默认的goroutine,如果main()函数结束了,那所有在main()中启动的goroutine都会立马结束。比如下面的例子:
28
30
29
31
``` go
60
62
61
63
## channel
62
64
63
- * 定义
65
+ * 定义:channel是一种类型,默认值是nil。channel是引用类型,如果作为函数参数,是传引用。
66
+
67
+ * 语法:
68
+
69
+ ``` go
70
+ /* channel_name是变量名,data_type是通道里的数据类型
71
+ channel_size是channel通道缓冲区最多可以存放的元素个数,这个参数是可选的,不给就表示没有缓冲区
72
+ */
73
+ var channel_name chan data_type = make (chan data_type, [channel_size])
74
+ ```
75
+
76
+ ``` go
77
+ var ch1 chan int
78
+ var ch2 chan string
79
+ var ch3 chan []int
80
+ var ch4 chan struct_type // 可以往通道传递结构体变量
81
+
82
+ ch5 := make (chan int )
83
+ ch6 := make (chan string , 100 )
84
+ ch7 := make (chan []int )
85
+ ch8 := make (chan struct_type)
86
+ ```
87
+
88
+ * 示例:
64
89
65
90
* 使用
66
91
You can’t perform that action at this time.
0 commit comments