Rumah >pembangunan bahagian belakang >Golang >Mengapakah orang menggunakan fungsi intrinsik dalam golang?

Mengapakah orang menggunakan fungsi intrinsik dalam golang?

WBOY
WBOYke hadapan
2024-02-06 09:18:09740semak imbas

为什么人们在 golang 中使用内部函数?

Kandungan soalan

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):
                    }
            }

Jawapan betul


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!

Kenyataan:
Artikel ini dikembalikan pada:stackoverflow.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam