Heim > Backend-Entwicklung > Golang > Warum verwenden Menschen in Golang intrinsische Funktionen?

Warum verwenden Menschen in Golang intrinsische Funktionen?

WBOY
Freigeben: 2024-02-06 09:18:09
nach vorne
738 Leute haben es durchsucht

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

Frageninhalt

Ich habe einige Open-Source-Go-Projekte gelesen und festgestellt, dass viele Codes wie folgt implementiert sind:

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)
            }
Nach dem Login kopieren

Im obigen Code sieht die innere Funktion go func...(id, s) unnötig aus. Mit anderen Worten, was wäre der Unterschied, wenn ich den folgenden Code schreiben würde:

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):
                    }
            }
Nach dem Login kopieren

Richtige Antwort


In Ihrem ersten Beispiel ist dies eine anonyme Funktion Das Schlüsselwort go bewirkt, dass es als Goroutine fungiert, dem Parallelitätsmodus in Go. Der Code innerhalb der anonymen Funktion (Goroutine) wird also gleichzeitig verarbeitet.

Im zweiten Beispiel bedeutet der Ausschluss von Goroutinen, dass der Code sequentiell ausgeführt wird.

Anonyme Funktionen sind Funktionen, die keinen Namen enthalten. Es wird häufig verwendet, wenn Sie Inline-Funktionen erstellen möchten. Es kann einen Abschluss bilden. Anonyme Funktionen werden auch „Funktionsliterale“ genannt.

Das obige ist der detaillierte Inhalt vonWarum verwenden Menschen in Golang intrinsische Funktionen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage