Willkommen zurück zu unserer dritten Folge von “Einführung in GoLang”. Heute werden wir uns mit Funktionen und Methoden beschäftigen. Diese beiden Konzepte sind essenziell, um sauberen und wiederverwendbaren Code zu schreiben.
Funktionen sind in Go eigenständige Einheiten von Code, die Aufgaben ausführen und optional Werte zurückgeben. Sie helfen uns, Code zu modularisieren und wiederzuverwenden.
Eine Funktion in Go wird mit dem Schlüsselwort func
deklariert, gefolgt vom Namen der Funktion, einer Parameterliste in
runden Klammern und einem optionalen Rückgabewert. Hier ein einfaches
Beispiel:
func greet(name string) string {
return "Hello, " + name
}Lassen Sie uns das aufschlüsseln:
func greet(name string) string bedeutet, dass wir eine
Funktion namens greet definieren, die einen Parameter
namens name vom Typ string entgegennimmt und
einen Wert vom Typ string zurückgibt.name
und geben die Zeichenkette “Hello,” gefolgt vom Namen zurück.Um eine Funktion aufzurufen, geben wir den Namen der Funktion gefolgt von Argumenten in runden Klammern an:
message := greet("GoLang")
fmt.Println(message)Hier rufen wir die Funktion greet mit dem Argument
“GoLang” auf und speichern das Ergebnis in der Variablen
message. Anschließend drucken wir die Nachricht aus.
Go unterstützt Funktionen mit mehreren Rückgabewerten. Dies ist besonders nützlich, wenn eine Funktion mehr als einen Wert zurückgeben muss. Hier ein Beispiel:
func divide(a, b float64) (float64, error) {
if b == 0 {
return 0, fmt.Errorf("division by zero")
}
return a / b, nil
}In dieser Funktion:
func divide(a, b float64) (float64, error) bedeutet,
dass die Funktion divide zwei Parameter a und
b vom Typ float64 entgegennimmt und zwei Werte
zurückgibt: einen float64 und einen
error.b gleich null ist. Wenn dies der Fall
ist, geben wir null und einen Fehler zurück.nil
zurück, um anzuzeigen, dass kein Fehler aufgetreten ist.Methoden sind spezielle Funktionen, die an einen bestimmten Datentyp gebunden sind. In Go können wir Methoden für benutzerdefinierte Typen definieren. Lassen Sie uns dies anhand eines Beispiels veranschaulichen.
Angenommen, wir haben einen benutzerdefinierten Typ
Rectangle:
type Rectangle struct {
width, height float64
}Nun definieren wir eine Methode area, die die Fläche des
Rechtecks berechnet:
func (r Rectangle) area() float64 {
return r.width * r.height
}Hier:
func (r Rectangle) area() float64 bedeutet, dass wir
eine Methode area definieren, die an den Typ
Rectangle gebunden ist. Die Methode nimmt keinen
zusätzlichen Parameter entgegen und gibt einen float64-Wert
zurück.width
und height des Rechtecks zu und berechnen die Fläche.Um eine Methode aufzurufen, verwenden wir die Punktnotation:
rect := Rectangle{width: 10, height: 5}
fmt.Println("Area:", rect.area())Hier erstellen wir eine Instanz von Rectangle mit einer
Breite von 10 und einer Höhe von 5. Dann rufen wir die Methode
area auf, um die Fläche zu berechnen und auszugeben.