面试题答案
一键面试package main
import (
"fmt"
"sync"
"time"
)
func task(id int) {
fmt.Printf("Task %d is running\n", id)
time.Sleep(2 * time.Second)
fmt.Printf("Task %d is done\n", id)
}
func main() {
var wg sync.WaitGroup
semaphore := make(chan struct{}, 5)
for i := 1; i <= 10; i++ {
wg.Add(1)
semaphore <- struct{}{}
go func(id int) {
defer func() {
<-semaphore
wg.Done()
}()
task(id)
}(i)
}
wg.Wait()
}