In Golang ist eine Funktion eine Gruppe von Anweisungen zum Ausführen von Aufgaben mit einem optionalen Rückgabewert . Go unterstützt zwei Hauptmethoden zur Argumentübergabe: Übergabe per Wert und Übergabe per Referenz. Go verwendet standardmäßig die Übergabe per Wert.

Grundbegriffe zur Parameterübergabe an Funktionen:
- Tatsächliche Parameter: Die an die Funktion übergebenen Argumente.
- Formale Parameter: Die von der Funktion empfangenen Parameter.
Zum Beispiel
package main
import "fmt"
// Cố gắng sửa đổi giá trị của num
func modify(num int) {
num = 50
}
func main() {
num := 20
fmt.Printf("Before, num = %d\n", num)
modify(num)
fmt.Printf("After, num = %d\n", num)
}
In diesem Beispiel numbleibt nach dem Aufruf unverändert , modifyda es per Wert übergeben wird.
Syntax
func functionName(param Type) {
// function body # Gọi theo giá trị
}
func functionName(param *Type) {
// function body # Gọi theo tham chiếu
}
Aufruf nach Wert
Beim Call-by-Value wird eine Kopie des tatsächlichen Parameterwerts übergeben. Änderungen in der Funktion wirken sich nicht auf die ursprüngliche Variable aus.
Syntax
func functionName(param Type) {
// function body
}
Zum Beispiel:
package main
import "fmt"
// Chỉnh sửa giá trị của num
func modify(num int) {
num = 50
}
func main() {
num := 20
fmt.Printf("Before, num = %d\n", num)
modify(num)
fmt.Printf("After, num = %d\n", num)
}
Ergebnis:
Before, num = 20
After, num = 20
Der Wert bleibt derselbe, da Änderungen im Inneren modifykeine Auswirkungen numauf das Äußere haben main.
Funktionsargumente in Golang
Aufruf per Referenz
Beim Call-by-Reference wird ein Zeiger auf den tatsächlichen Parameter übergeben, sodass sich alle Änderungen innerhalb der Funktion auf die ursprüngliche Variable auswirken.
Syntax
func functionName(param *Type) {
// function body
}
Zum Beispiel:
package main
import "fmt"
// Chỉnh sửa giá trị của num qua tham chiếu
func modify(num *int) {
*num = 50
}
func main() {
num := 20
fmt.Printf("Before, num = %d\n", num)
modify(&num)
fmt.Printf("After, num = %d\n", num)
}
Ergebnis
Before, num = 20
After, num = 50
Da numes per Referenz übergeben wird, modifyändert der Befehl seinen Wert, was sich im Befehl widerspiegelt main.