频道未关闭,程序停止
在使用sync.WaitGroup和频道的Go应用程序中,您遇到了程序的问题即使等待所有 goroutine 完成后也不会退出。
问题详细信息
您的代码使用 WaitGroup 来跟踪 goroutine 完成并使用通道来传输获取的符号名称。然而,fetchedSymbols 通道无限期地保持打开状态,从而防止 main 中的循环终止。
解决方案
<code class="go">go func() { wg.Wait() close(fetchedSymbols) }()</code>
<code class="go">for { select { case symbol := <-fetchedSymbols: fmt.Println("fetched", symbol) } }</code>
通过这些修改,您的代码现在将在获取并存储所有符号引号后正确退出。
以上是以下是一些适合您提供的文本的基于问题的标题: * **Go WaitGroup 和 Channels:为什么我的程序不退出?** * **陷入循环:如何使用 WaitGro 正确关闭 Go 中的通道的详细内容。更多信息请关注PHP中文网其他相关文章!