课程进度 40% · 第10/23章第10/23章 · 标签 1/4
— 1 —
Goroutine基础
Goroutine是Go语言的轻量级线程,使用go关键字启动。
go
1
// 启动一个goroutine
2
func sayHello() {
3
fmt.Println("Hello from goroutine")
4
}
5
go sayHello()
6
7
// 主协程等待
8
fmt.Println("main end")
9
// 实际开发中常用sync.WaitGroup等待所有goroutine结束
- Goroutine非常轻量,数万个也不会崩溃
- 主协程退出会导致所有goroutine退出
goroutinego关键字并发轻量级
— 2 —
Channel通信
Channel用于Goroutine间通信,保证数据安全传递。
go
1
// 创建channel
2
ch := make(chan int)
3
4
// 发送和接收
5
ch <- 10 // 发送数据
6
x := <-ch // 接收数据
7
8
// 启动goroutine并通信
9
func worker(ch chan int) {
10
data := <-ch
11
fmt.Println("worker收到:", data)
12
}
13
go worker(ch)
14
ch <- 42
15
16
// 关闭channel
17
close(ch)
- channel类型:无缓冲、有缓冲
- 关闭channel用close,接收端可检测