close 未初始化的channel 会panic
func main() {
var Student struct{
msg chan string
}
close(Student.msg)
}
panic: close of nil channel
goroutine 1 [running]:
main.main()
close channel 会唤醒所有监听他的goroutine
func main() {
ch := make(chan struct{})
wg := sync.WaitGroup{}
wg.Add(10)
for i := 0; i < 10; i++ {
go func(num int) {
fmt.Println(num,"启动")
tmp := <-ch
fmt.Println(num,"退出",tmp)
wg.Done()
}(i)
}
time.AfterFunc(5*time.Second, func() {
close(ch)
})
wg.Wait()
}
9 启动
5 启动
6 启动
7 启动
8 启动
1 启动
4 启动
0 启动
3 启动
2 启动
9 退出 {}
2 退出 {}
3 退出 {}
0 退出 {}
4 退出 {}
1 退出 {}
8 退出 {}
7 退出 {}
6 退出 {}
5 退出 {}