Funktionsdeklaration
In den vorherigen Labs haben wir, unabhängig davon, ob das Programm einfach oder komplex war, nur die main
-Funktion für Operationen verwendet.
Ein Programm kann nur eine main
-Funktion haben, die der Einstiegspunkt des Programms ist. Wenn wir das Programm ausführen, werden andere Funktionen direkt oder indirekt innerhalb der main
-Funktion aufgerufen und ausgeführt.
Schauen wir uns nun die Syntax von Funktionen an:
func functionName(parameters...)(returnValues...){
code block
}
Hier wird der Funktionsname verwendet, um die Funktion zu identifizieren. Für den Funktionsnamen gelten folgende Regeln:
- Er kann aus Buchstaben, Zahlen und Unterstrichen bestehen. Allerdings darf der erste Buchstabe des Funktionsnamens keine Zahl sein. Beispielsweise ist
func 3ab(){}
ungültig.
- Wenn der erste Buchstabe groß geschrieben ist, kann die Funktion von Code in externen Paketen referenziert werden. Wenn der erste Buchstabe klein geschrieben ist, kann sie nur innerhalb des Pakets verwendet werden. Dies ähnelt öffentlichen und privaten Funktionen.
Die Parameterliste deklariert die Anzahl und den Typ der in die Funktion übergebenen Parameter:
-
Die Parameterliste kann leer sein oder mehrere Parameter enthalten.
-
Jeder Parameter besteht aus einem Parameternamen und einem Parametertyp. Beispielsweise deklarieren wir in der folgenden Parameterliste zwei Variablen vom Typ int
.
func test(a, b int) (res int){}
Die Rückgabelisten werden verwendet, um die benötigten Werte nach der Ausführung der Funktion zurückzugeben:
-
Die Rückgabeliste ähnelt der Parameterliste. Die Anzahl der Parameter kann beliebig sein.
-
Im Allgemeinen besteht die Rückgabeliste aus Variablennamen und Variablentypen, wobei der Variablenname optional ist.
-
Wenn nur eine Variable zurückgegeben wird und nur der Variablentyp deklariert wird, können die Klammern weggelassen werden. Beispielsweise:
func test(a int, b string) int{}
Wenn die Parametertypen gleich sind, können wir die Kurzschreibweise verwenden. Die folgenden beiden Funktionen haben die gleiche Funktionalität:
func test(a, b int, c, d string)(res1, res2 int, res3 string){}
// Short writing mode
func test(a, b int, c, d string)(res1, res2 int, res3 string){}
Ersetzen Sie den Inhalt von func.go
durch folgenden Code:
package main
import "fmt"
func check(divisor int) bool {
if divisor == 0 {
fmt.Println("The divisor cannot be 0")
return false
}
return true
}
func main() {
a1, b1 := 12, 4
a2, b2 := 12, 0
// Use the check function before division
if check(b1) {
fmt.Println(a1 / b1)
}
if check(b2) {
fmt.Println(a2 / b2)
}
}
Führen Sie das Programm erneut aus:
go run func.go
Sie sollten die gleiche Ausgabe sehen:
3
The divisor cannot be 0
Diesmal ist die Prüfungslogik in der check
-Funktion gekapselt, wodurch der Code sauberer und wiederverwendbarer wird.