Go-Funktionen
Funktionen sind grundlegende Codeblöcke, die zum Ausführen einer Aufgabe verwendet werden.
Die Sprache Go hat mindestens eine main()-Funktion.
Man kann verschiedene Funktionen mithilfe von Funktionen unterteilen; logisch betrachtet führt jede Funktion eine bestimmte Aufgabe aus.
Die Funktionsdeklaration teilt dem Compiler den Funktionsnamen, den Rückgabetyp und die Parameter mit.
Die Go-Standardbibliothek bietet verschiedene integrierte Funktionen, die verfügbar sind. Zum Beispiel kann die Funktion len() Argumente unterschiedlicher Typen akzeptieren und die Länge dieses Typs zurückgeben. Wenn wir eine Zeichenkette übergeben, gibt sie die Länge der Zeichenkette zurück; wenn wir ein Array übergeben, gibt sie die Anzahl der im Array enthaltenen Elemente zurück.
Funktionsdefinition
Das Format zum Definieren von Funktionen in Go ist wie folgt:
func function_name( [parameter list] ) [return_types] {
函数体
}
Analyse der Funktionsdefinition:
- func: Eine Funktion wird mit func deklariert.
- function_name: Der Funktionsname, die Parameterliste und der Rückgabewerttyp bilden die Funktionssignatur.
- Parameterliste: Die Parameterliste. Parameter sind wie Platzhalter. Wenn eine Funktion aufgerufen wird, können Werte an die Parameter übergeben werden, und diese Werte werden als aktuelle Parameter bezeichnet. Die Parameterliste legt die Parametertypen, die Reihenfolge und die Anzahl der Parameter fest. Parameter sind optional, was bedeutet, dass eine Funktion keine Parameter enthalten muss.
- return_types: Der Rückgabetyp. Die Funktion gibt eine Liste von Werten zurück. return_types ist der Datentyp dieser Werteliste. Einige Funktionen benötigen keinen Rückgabewert; in diesem Fall ist return_types nicht erforderlich.
- Funktionskörper: die Sammlung von Code, die die Funktion definiert.
Beispiel
Das folgende Beispiel ist der Code für die Funktion max(), die zwei ganzzahlige Parameter num1 und num2 entgegennimmt und das Maximum dieser beiden Parameter zurückgibt:
Beispiel
func max(num1, num2 int) int {
/* lokale Variablen deklarieren */
var result int
if (num1 > num2) {
result = num1
} else {
result = num2
}
return result
}
Funktionsaufruf
Wenn Sie eine Funktion erstellen, definieren Sie, was die Funktion tun soll, und die angegebene Aufgabe wird durch den Aufruf der Funktion ausgeführt.
Aufrufen einer Funktion, Übergeben von Argumenten an die Funktion und Zurückgeben von Werten, zum Beispiel:
Beispiel
import "fmt"
func main() {
/* Lokale Variablen definieren */
var a int = 100
var b int = 200
var ret int
/* Funktion aufrufen und den Maximalwert zurückgeben */
ret = max(a, b)
fmt.Printf( "Der Maximalwert ist: %d\n\n", ret )
}
/* Funktion gibt das Maximum zweier Zahlen zurück */
func max(num1, num2 int) int {
/* Lokale Variablen definieren */
var result int
if (num1 > num2) {
result = num1
} else {
result = num2
}
return result
}
Im obigen Beispiel wird die Funktion max() in der Funktion main() aufgerufen, und das Ausführungsergebnis ist:
最大值是 : 200
Funktionen, die mehrere Werte zurückgeben
Go-Funktionen können mehrere Werte zurückgeben, zum Beispiel:
Beispiel
import "fmt"
func swap(x, y string) (string, string) {
return y, x
}
func main() {
a, b := swap("Google", "Example")
fmt.Println(a, b)
}
Das Ausführungsergebnis des obigen Beispiels ist:
Example Google
Funktionsparameter
Wenn eine Funktion Parameter verwendet, können diese Variablen als formale Parameter der Funktion bezeichnet werden.
Formale Parameter sind wie lokale Variablen, die innerhalb des Funktionsrumpfs definiert werden.
Beim Aufrufen einer Funktion gibt es zwei Möglichkeiten, Argumente zu übergeben:
| Übergabetyp | Beschreibung |
|---|---|
| Übergabe per Wert | Übergabe per Wert bedeutet, dass beim Aufruf der Funktion eine Kopie des aktuellen Parameters erstellt und an die Funktion übergeben wird, sodass Änderungen am Parameter innerhalb der Funktion den aktuellen Parameter nicht beeinflussen. |
| Übergabe per Referenz | Übergabe per Referenz bedeutet, dass beim Aufruf die Adresse des aktuellen Parameters an die Funktion übergeben wird. Änderungen, die innerhalb der Funktion am Parameter vorgenommen werden, wirken sich dann auf den aktuellen Parameter aus. |
Standardmäßig verwendet die Sprache Go die Wertübergabe, was bedeutet, dass die aktuellen Parameter während des Aufrufs nicht beeinflusst werden.
Funktionsverwendung
| Funktionsverwendung | Beschreibung |
|---|---|
| Funktion als Argument einer anderen Funktion | Nachdem eine Funktion definiert wurde, kann sie als aktueller Parameter an eine andere Funktion übergeben werden. |
| Funktionsabschluss | Eine Closure ist eine anonyme Funktion, die in der dynamischen Programmierung verwendet werden kann. |
| Methoden | Eine Methode ist eine Funktion, die einen Receiver enthält. |