Maison >développement back-end >Golang >Voici quelques titres basés sur des questions qui correspondent au texte fourni : * **Go WaitGroup et Channels : pourquoi mon programme ne se ferme-t-il pas ?** * ** Coincé dans une boucle : comment fermer correctement les chaînes en Go avec WaitGro
Canal non fermé, programme bloqué
Dans votre application Go utilisant sync.WaitGroup et les canaux, vous avez rencontré un problème où le programme ne se termine pas même après avoir attendu la fin de toutes les goroutines.
Détails du problème
Votre code utilise un WaitGroup pour suivre l'achèvement des goroutines et un canal pour transmettre les noms de symboles récupérés . Cependant, le canal fetchedSymbols reste ouvert indéfiniment, empêchant la boucle principale de se terminer.
Solution
<code class="go">go func() { wg.Wait() close(fetchedSymbols) }()</code>
<code class="go">for { select { case symbol := <-fetchedSymbols: fmt.Println("fetched", symbol) } }</code>
Avec ces modifications, votre code se fermera désormais correctement une fois que toutes les citations de symboles auront été récupérées et stockées.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!