Saluran Tidak Ditutup, Program Terhenti
Dalam aplikasi Go anda menggunakan penyegerakan.WaitGroup dan saluran, anda telah menghadapi isu di mana program tidak keluar walaupun selepas menunggu semua goroutine selesai.
Butiran Masalah
Kod anda menggunakan WaitGroup untuk menjejaki penyiapan goroutine dan saluran untuk menghantar nama simbol yang diambil . Walau bagaimanapun, saluran fetchedSymbols kekal terbuka selama-lamanya, menghalang gelung dalam utama daripada ditamatkan.
Penyelesaian
<code class="go">go func() { wg.Wait() close(fetchedSymbols) }()</code>
<code class="go">for { select { case symbol := <-fetchedSymbols: fmt.Println("fetched", symbol) } }</code>
Dengan pengubahsuaian ini, kod anda kini akan keluar dengan betul selepas semua petikan simbol diambil dan disimpan.
Atas ialah kandungan terperinci Berikut ialah beberapa tajuk berasaskan soalan yang sesuai dengan teks yang anda sediakan: * **Pergi WaitGroup dan Saluran: Mengapa Program Saya Tidak Keluar?** * **Terperangkap dalam Gelung: Cara Menutup Saluran dengan Betul dalam Go dengan WaitGro. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!