チャネルが閉じられておらず、プログラムが停止しています
sync.WaitGroup とチャネルを使用している Go アプリケーションで、プログラムが停止しているという問題が発生しました。すべてのゴルーチンが完了するのを待っても終了しません。
問題の詳細
コードは、WaitGroup を利用してゴルーチンの完了を追跡し、チャネルを利用してフェッチされたシンボル名を送信します。 。ただし、fetchedSymbols チャネルは無限に開いたままになり、メインのループが終了できなくなります。
WaitGroup によるシグナル チャネルの閉鎖:
<code class="go">go func() { wg.Wait() close(fetchedSymbols) }()</code>不要なブロックを削除します:
<code class="go">for { select { case symbol := <-fetchedSymbols: fmt.Println("fetched", symbol) } }</code>遅延のクローズ:
以上が提供されたテキストに適合する質問ベースのタイトルをいくつか示します。 * **WaitGroup とチャンネルに移動: プログラムが終了しないのはなぜですか?** * **ループに陥った: WaitGro を使用して Go でチャネルを適切に閉じる方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。