你遇到的问题主要是由于 main
函数在子 goroutine 完成工作之前就退出了。在 Go 中,当 main
函数返回时,整个程序就会终止,而不管其他 goroutine 是否还在运行。
sync.WaitGroup
sync.WaitGroup 是 Go 标准库中用于等待一组 goroutine 完成的工具。你可以使用它来确保 main
函数在所有子 goroutine 完成后再退出。
2. 简化 receiver
函数
你可以使用 for...range
循环来简化 receiver
函数,它会自动处理通道关闭的情况。
总结
通过使用 sync.WaitGroup
,你可以确保 main
函数等待所有子 goroutine 完成工作后再退出,从而避免程序提前终止。同时,使用 for...range
循环可以简化通道的接收操作。