有人可以解释为什么这段代码会引发“致命错误:所有 goroutines 都在休眠 - 死锁!”?
我似乎无法找到问题所在。我已经看到一些关于这个特定错误的问题,但原因主要是循环通过一个通道而不关闭它。谢谢!
package main
import (
"fmt"
"sync"
"time"
)
func main() {
ch := make(chan time.Duration)
var wg sync.WaitGroup
for _, v := range []time.Duration{5, 1} {
wg.Add(1)
go wait(v, ch, wg)
fmt.Println(<-ch)
}
wg.Wait()
}
func wait(seconds time.Duration, c chan time.Duration, wg sync.WaitGroup) {
defer wg.Done()
time.Sleep(seconds * time.Second)
c <- seconds
}