Die Parameterübergabe der GoLang-Funktion übernimmt den Wertübergabemechanismus. Die Änderung von Werttypparametern wirkt sich nicht auf die tatsächlichen Parameter aus, während die Änderung von Referenztypparametern den indirekten Zugriff und die Änderung der tatsächlichen Parameter ermöglicht Parameter.
Parameterübergabe in GoLang-Funktionen
Einführung
In GoLang folgt die Parameterübergabe dem Pass-by-Value-Mechanismus. Dies bedeutet, dass Änderungen an den Parametern innerhalb der Funktion keine Auswirkungen auf die tatsächlichen Parameter außerhalb der Funktion haben.
Parametertyp
GoLang-Funktionsparameter können Werttypen oder Referenztypen sein.
Werttyp
Bei Werttypparametern haben Änderungen an den Parametern innerhalb der Funktion keine Auswirkungen auf die tatsächlichen Parameter. Dies liegt daran, dass bei einem Funktionsaufruf eine Kopie der Parameter erstellt wird.
func swap(a, b int) { a, b = b, a // 在函数内交换 a 和 b 的副本 } func main() { x := 5 y := 7 swap(x, y) fmt.Println(x, y) // 输出 5 7 }
Referenztyp
Bei Referenztypparametern wirken sich Änderungen an den Parametern innerhalb der Funktion auf die tatsächlichen Parameter aus. Dies liegt daran, dass die Funktion direkt mit den tatsächlichen Daten arbeitet.
func swap(a, b []int) { a[0], b[0] = b[0], a[0] // 交换切片的第一个元素 } func main() { x := []int{5} y := []int{7} swap(x, y) fmt.Println(x, y) // 输出 [7] [5] }
Pointers
Pointer-Typen bieten einen Mechanismus für den indirekten Zugriff auf Werte. Beim Übergeben eines Referenztyps über einen Zeiger können die tatsächlichen Parameter geändert werden.
func swap(a, b *int) { *a, *b = *b, *a // 交换指针指向的值 } func main() { x := 5 y := 7 swap(&x, &y) fmt.Println(x, y) // 输出 7 5 }
Praktischer Fall
Das Folgende ist ein praktischer Fall mit Funktionsparameterübergabe:
type Book struct {
Das obige ist der detaillierte Inhalt vonParameterübergabe in der Golang-Funktion. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!