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

Mengapakah orang menggunakan fungsi intrinsik dalam golang?

WBOY
Lepaskan: 2024-02-06 09:18:09
ke hadapan
738 orang telah melayarinya

为什么人们在 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)
            }
Salin selepas log masuk

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):
                    }
            }
Salin selepas log masuk

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!

sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan