Struct Tanpa Nama dan Struct Kosong dalam Go
[Soalan Pertama: Struktur Tanpa Nama]
Dalam kod yang anda berikan, baris selesai <- struct{}{} menandakan struct kosong. Struct kosong ialah struct yang tidak mempunyai medan. Ia sering digunakan untuk memberi isyarat atau sebagai pemegang tempat. Dalam keadaan ini, ia digunakan untuk memberi isyarat kepada goroutine pahlawan bahawa ia telah selesai.
Kurungan di sekeliling struct{}{} digunakan untuk mencipta jenis tanpa nama. Jenis tanpa nama ialah jenis yang diisytiharkan tanpa nama. Melakukannya membolehkan kami mengisytiharkan jenis dan pembolehubah secara serentak.
[Soalan Kedua: Struktur Kosong untuk Isyarat Saluran]
Barisan untuk _ = range langs { < ;-done } digunakan untuk menyegerakkan goroutine. Ia menyekat sehingga semua goroutine selesai menghantar isyarat untuk menunjukkan siapnya.
<-done menerima nilai daripada saluran yang telah selesai dan membuangnya. Dalam kes ini, kami tidak mengambil berat tentang nilai yang diterima, jadi kami menggunakan garis bawah sebagai pemegang tempat untuk menunjukkan bahawa kami tidak mahu menggunakan nilai yang diterima.
Barisan ini diperlukan kerana program perlu menunggu semua goroutine selesai sebelum meneruskan. Tanpa talian ini, program akan diteruskan sebelum semua gorout selesai, yang berpotensi membawa kepada keputusan yang tidak dijangka atau kebuntuan.
Atas ialah kandungan terperinci Bagaimanakah Struct Tanpa Nama dan Struct Kosong Berfungsi dalam Penyegerakan Go Goroutine?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!