Kanal nicht geschlossen, Programm blockiert
In Ihrer Go-Anwendung, die sync.WaitGroup und Kanäle verwendet, ist ein Problem mit dem Programm aufgetreten wird nicht beendet, selbst nachdem auf den Abschluss aller Goroutinen gewartet wurde.
Problemdetails
Ihr Code verwendet eine WaitGroup, um den Abschluss von Goroutinen zu verfolgen, und einen Kanal, um abgerufene Symbolnamen zu übertragen . Der fetchedSymbols-Kanal bleibt jedoch auf unbestimmte Zeit geöffnet, wodurch verhindert wird, dass die Schleife in main beendet wird.
Lösung
<code class="go">go func() { wg.Wait() close(fetchedSymbols) }()</code>
<code class="go">for { select { case symbol := <-fetchedSymbols: fmt.Println("fetched", symbol) } }</code>
Mit diesen Änderungen wird Ihr Code nun korrekt beendet, nachdem alle Symbolanführungszeichen abgerufen und gespeichert wurden.
Das obige ist der detaillierte Inhalt vonHier sind einige fragenbasierte Titel, die zu Ihrem bereitgestellten Text passen: * **Go WaitGroup und Kanäle: Warum wird mein Programm nicht beendet?** * **In einer Schleife stecken geblieben: So schließen Sie Kanäle in Go mit WaitGro richtig. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!