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

Warum verwenden Menschen in Golang intrinsische Funktionen?

WBOY
WBOYnach vorne
2024-02-06 09:18:09734Durchsuche

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

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

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen