頻道未關閉,程式停止
在使用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 := <ol start="3"> <li> <strong></strong>關閉延遲:</li> 請記住在fetchSymbol goroutine 中關閉延遲,以確保請求和文件寫入在退出前完成.</ol> <p></p>透過這些修改,您的程式碼現在將在取得並儲存所有符號引號後正確退出。 </code>
以上是以下是一些適合您提供的文本的基於問題的標題: * **Go WaitGroup 和 Channels:為什麼我的程式不退出? ** ** * **陷入循環:如何使用 WaitGro 正確關閉 Go 中的通道的詳細內容。更多資訊請關注PHP中文網其他相關文章!