面试题答案
一键面试package main
import (
"fmt"
"sync"
)
func task1(wg *sync.WaitGroup) {
defer wg.Done()
fmt.Println("Task 1 completed")
}
func task2(wg *sync.WaitGroup) {
defer wg.Done()
fmt.Println("Task 2 completed")
}
func task3(wg *sync.WaitGroup) {
defer wg.Done()
fmt.Println("Task 3 completed")
}
func main() {
var wg sync.WaitGroup
wg.Add(3)
go task1(&wg)
go task2(&wg)
go task3(&wg)
wg.Wait()
fmt.Println("All tasks completed")
}
这里使用了sync.WaitGroup
作为同步机制。WaitGroup
用于等待一组Goroutine完成。通过wg.Add(n)
来设置需要等待的Goroutine数量,在每个Goroutine函数内部使用defer wg.Done()
表示该Goroutine完成,主函数中使用wg.Wait()
等待所有Goroutine完成后再继续执行后续代码。