Heim >Backend-Entwicklung >Golang >Warum verwenden Menschen in Golang intrinsische Funktionen?
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) }
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): } }
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!