概述
Go 语言的强大之处在于其内置的并发支持,而 goroutine 是其并发编程的核心。
本文将讨论如何高效使用 goroutine,通过清晰的示例代码和注释,帮助读者更好地理解和应用并发编程。
1. 了解 goroutine 的基础
goroutine 的创建
package main
import (
"fmt"
"time"
)
func main() {
// 创建并启动goroutine
go func() {
for i := 0; i < 5; i++ {
fmt.Println("Goroutine:", i)
time.Sleep(time.Second)
}
}()
// 主goroutine
for i := 0; i < 3; i++ {
fmt.Println("Main:", i)
time.Sleep(time.Second)
}
}
2. goroutine 之间的通信
用通道进行通信
package main
import (
"fmt"
"sync"
"time"
)
func main() {
var wg sync.WaitGroup
ch := make(chan int)
// 启动goroutine发送数据
wg.Add(1)
go func() {
defer wg.Done()
for i := 0; i < 5; i++ {
ch