Heim > Backend-Entwicklung > Golang > Open-Source-Projekte und gemeinsame Nutzung von Ressourcen für anonyme Golang-Funktionen und -Abschlüsse

Open-Source-Projekte und gemeinsame Nutzung von Ressourcen für anonyme Golang-Funktionen und -Abschlüsse

王林
Freigeben: 2024-05-04 22:15:01
Original
326 Leute haben es durchsucht

Anonyme Funktionen und Abschlüsse: Anonyme Funktionen sind namenlose Funktionen, die spontan erstellt werden, um eine bestimmte Aufgabe auszuführen. Abschlüsse sind Variablen, die den Zugriff auf externe Variablen innerhalb einer anonymen Funktion ermöglichen. In Go werden sie mit der func()-Syntax deklariert. Anonyme Funktionen und Abschlüsse können zum Übergeben von Argumenten, zum Speichern in Variablen oder in der Praxis zum Sortieren von Slices und zur Ereignisbehandlung verwendet werden.

Open-Source-Projekte und gemeinsame Nutzung von Ressourcen für anonyme Golang-Funktionen und -Abschlüsse

Anonyme Funktionen und Abschlüsse in Go

Einführung

Anonyme Funktionen sind Funktionen in Go, die nicht explizit benannt sind und als Ausdrücke verwendet werden können. Ein Abschluss ist eine anonyme Funktion, die einen Verweis auf eine externe Variable enthält, der auch nach Rückkehr der Funktion bestehen bleibt.

Anonyme Funktionen

Deklarieren Sie anonyme Funktionen mit der func()-Syntax:

func() {
    fmt.Println("这是一个匿名函数")
}
Nach dem Login kopieren

Anonyme Funktionen können als Argumente an andere Funktionen übergeben oder in Variablen gespeichert werden:

func callAnon(anon func()) {
    anon()
}

var anonFunc = func() {
    fmt.Println("这是一个存储在变量中的匿名函数")
}
Nach dem Login kopieren

Abschlüsse

Abschlüsse ermöglichen den Zugriff auf anonyme Funktionen außen Bereiche. Diese Variablen werden Abschlussvariablen genannt.

var x = 10

anon := func() {
    fmt.Println(x)  // 访问闭包变量
}

anon()  // 输出:10
Nach dem Login kopieren

Practical Case

  • sort Slices:
  • -Verschluss für die Sortierung von Scheiben nach einem bestimmten Feldwert:
    type Employee struct {
        Name string
        Age  int
    }
    
    func SortEmployeesByAge(employees []Employee) {
        sort.Slice(employees, func(i, j int) bool {
            return employees[i].Age < employees[j].Age
        })
    }
    Nach dem Login kopieren
  • event Handler:
  • create eine Empfängerfunktion und geben Sie eine anonyme Funktion als Rückruf an:

type Button struct {
    onClick func()
}

func (b *Button) AddClickListener(f func()) {
    b.onClick = f
}
Nach dem Login kopieren
Open-Source-Projekte und -Ressourcen
  • [Go-Wiki: Anonyme Funktionen und Abschlüsse](https://go.dev/blog/closures)
  • [Praktisches Go-Tutorial: Abschlüsse](https://go .dev/blog/closures)
  • [Golang anonyme Funktionen und Schließungen](https://www.jianshu.com/p/8e78029d888a)
🎜

Das obige ist der detaillierte Inhalt vonOpen-Source-Projekte und gemeinsame Nutzung von Ressourcen für anonyme Golang-Funktionen und -Abschlüsse. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
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