79563946

Date: 2025-04-09 09:25:03
Score: 3
Natty:
Report link

你遇到的问题主要是由于 main 函数在子 goroutine 完成工作之前就退出了。在 Go 中,当 main 函数返回时,整个程序就会终止,而不管其他 goroutine 是否还在运行。

解决方案

1. 使用 sync.WaitGroup

sync.WaitGroup 是 Go 标准库中用于等待一组 goroutine 完成的工具。你可以使用它来确保 main 函数在所有子 goroutine 完成后再退出。

2. 简化 receiver 函数

你可以使用 for...range 循环来简化 receiver 函数,它会自动处理通道关闭的情况。

总结

通过使用 sync.WaitGroup,你可以确保 main 函数等待所有子 goroutine 完成工作后再退出,从而避免程序提前终止。同时,使用 for...range 循环可以简化通道的接收操作。

Reasons:
  • Has code block (-0.5):
  • Self-answer (0.5):
  • No latin characters (2):
  • Low reputation (1):
Posted by: Chao Li