Rumah >pembangunan bahagian belakang >Golang >Mengapakah orang menggunakan fungsi intrinsik dalam golang?
Saya sedang membaca beberapa projek open source go dan mendapati terdapat banyak kod yang dilaksanakan seperti berikut:
for id, s := range subscribers { go func(id string, s *hellosaidsubscriber) { select { case <-s.stop: unsubscribe <- id return default: } select { case <-s.stop: unsubscribe <- id case s.events <- e: case <-time.after(time.second): } }(id, s) }
Dalam kod di atas, fungsi dalaman go func...(id, s)
kelihatan tidak perlu. Dengan kata lain, apakah perbezaannya jika saya menulis kod berikut:
for id, s := range subscribers { select { case <-s.stop: unsubscribe <- id return default: } select { case <-s.stop: unsubscribe <- id case s.events <- e: case <-time.After(time.Second): } }
Dalam contoh pertama anda, ini ialah fungsi tanpa nama Kata kunci go
menjadikannya bertindak sebagai goroutine, iaitu mod konkurensi dalam Go. Jadi kod di dalam fungsi tanpa nama (goroutine) akan diproses secara serentak.
Dalam contoh kedua, mengecualikan goroutine bermakna kod akan dijalankan secara berurutan.
Fungsi tanpa nama ialah fungsi yang tidak mengandungi sebarang nama. Ia sering digunakan apabila anda ingin mencipta fungsi sebaris. Ia boleh membentuk penutupan. Fungsi tanpa nama juga dipanggil fungsi literal.
Atas ialah kandungan terperinci Mengapakah orang menggunakan fungsi intrinsik dalam golang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!