Rückgabewerte von Funktionen
Daten in Funktionen übergeben zu können, ist wertvoll, aber es ist ebenso vorteilhaft, Daten aus Funktionen abzurufen. Hier wird das return
-Schlüsselwort wesentlich.
Das return
-Schlüsselwort ermöglicht es Funktionen, Daten an den Punkt im Code zurückzusenden, an dem sie aufgerufen wurden. Hier ist die Syntax für eine Funktion mit einer return
-Anweisung:
func functionName(param_1 datatype, param_2 datatype, ...) return_datatype {
// Code
return data_to_be_returned
}
Das data_to_be_returned
ist der Ort, an dem wir einen Ausdruck oder einen Wert angeben. Das returned_datatype
repräsentiert den erwarteten Datentyp für den Wert, der zurückgegeben wird. Dies wird durch ein Beispiel klarer.
Das folgende Programm veranschaulicht die Implementierung einer return
-Anweisung über eine Funktion, die sowohl die Summe als auch das Produkt von zwei gegebenen Ganzzahlargumenten berechnet und zurückgibt:
index.go
package main import "fmt" func myFunc(value_1 int, value_2 int) int { var sum int = value_1 + value_2 var prod int = value_1 * value_2 var result int = sum + prod return result } func main() { fmt.Println(myFunc(5, 7)) }
Bitte beachten Sie, dass wir innerhalb der Println
-Funktion myFunc(5, 7)
haben und das obige Programm die Ausgabe 47
erzeugt, die aus den Berechnungen der myFunc()
-Funktion resultiert. Dies zeigt, dass die return
-Anweisung spezifische Daten an die Stelle zurückgibt, an der die Funktion aufgerufen wurde. Zusätzlich können wir die zurückgegebenen Daten in einer Variablen speichern:
index.go
var returnedValue int = myFunc(5, 7) fmt.Println(returnedValue) // Outputs '47'
Hinweis
Eine Funktion benötigt keine Parameter, um eine
return
-Anweisung einzuschließen.
Eine Funktion kann keinen Code nach einer return-Anweisung enthalten, und typischerweise erlaubt Go keine mehrfachen return-Anweisungen:
index.go
// Function exits after the first return statement it encounters func exampleOne() int { return 1 return 2 // Will be ignored } // There cannot be any code after a return statement func exampleTwo() int { return 1 fmt.Println() // Error here }
Nichtsdestotrotz ist es möglich, die return
-Anweisung innerhalb von bedingten Strukturen zu verwenden, um selektiv Werte zurückzugeben:
index.go
package main import "fmt" func myFunc() string { if(1 > 2) { return "1 is greater than 2" } else { return "2 is greater than 1" } } func main() { fmt.Println(myFunc()) }
Danke für Ihr Feedback!