Menu
Coddy logo textTech

Anonyme Funktionen

Lektion 9 von 19 im Kurs Funktionen und Pointer in Golang von Coddy.

Was wir bereits gelernt haben, ist, wie man eine Funktion mit einem Namen definiert, und wenn wir sie aufrufen müssen, verwenden wir diesen Namen. Es gibt jedoch eine andere Art von Funktionen ohne Namen, und wir nennen diesen Typ eine anonyme Funktion.

Sie verhält sich genau wie eine einfache Funktion, weist jedoch einige Unterschiede in ihrer Funktionsweise auf. Diese Funktionen ermöglichen es uns, Aktionen direkt zu definieren, ohne eine Funktion an anderer Stelle definieren zu müssen.

Schauen wir uns ein Beispiel an, wie man eine anonyme Funktion definiert:

b := func(x, y int) int { return x - y }
fmt.Println(b(100, 50))

Hier definieren wir eine Variable b, die eine anonyme Funktion speichert, welche eine Subtraktion durchführt. Wenn wir die Funktion aufrufen, verwenden wir einfach den Variablennamen b(100, 50).

Wir können eine anonyme Funktion auch als Ergebnis einer anderen Funktion erhalten. Zum Beispiel:

func operation(a int) func(int) int {
    if a == 1 {
        return func(a int) int { return a + 10 }
    } else {
        return func(a int) int { return a * 10 }
    }
}
func main() {
    b := operation(1)
    fmt.Println(b(14))
}

Hier definieren wir eine reguläre Funktion namens operation, und das Ergebnis (der Rückgabewert) wird eine anonyme Funktion <strong>func(int) int</strong> anstelle eines einfachen Wertes sein.

Wir weisen den Rückgabewert einer Variablen b zu. Da wir 1 als Parameter an die Funktion operation übergeben, wird dieser Block ausgeführt:

return func(a int) int { return a + 10 }

Wenn wir nun unsere anonyme Funktion b aufrufen, müssen wir einen Integer-Wert übergeben, zum Beispiel 14.

Das Ergebnis wird sein:

24

Dies ist die Berechnung von a + 10, wobei wir a übergeben, was 14(<strong>b(14)</strong>) ist.
 

challenge icon

Aufgabe

Einfach

Schreibe eine anonyme Funktion, die drei Integer-Argumente entgegennimmt.

Wenn das erste Argument größer als das letzte ist, gib die Summe aller Argumente zurück. Wenn nicht, gib das Produkt des ersten und letzten Arguments zurück.

Speichere das Ergebnis der Funktion in einer Variable namens result.

Probier es selbst

package main

import "fmt"

func main() {
    // Definiere die anonyme Funktion und weise sie einer Variablen namens "result" zu.
 
    
    
    // Gib das Ergebnis aus. Ändere dies nicht!
    fmt.Println("Result:", result(2, 3, 4))
    fmt.Println("Result:", result(8, 3, 4))
}

Alle Lektionen in Funktionen und Pointer in Golang