Heim >Backend-Entwicklung >Golang >Wie werden Golang-Funktionsparameter übergeben?
Es gibt zwei Möglichkeiten, Funktionsparameter zu übergeben: Wertübergabe und Referenzübergabe. Die Wertübergabe kopiert eine Kopie des Parameterwerts, und Änderungen an der Kopie wirken sich nicht auf den Originalwert aus. Die Referenzübergabe übergibt einen Verweis auf den Parameterwert, und Änderungen an dem Wert, auf den der Verweis verweist, wirken sich auf den ursprünglichen Wert aus. Praxisbeispiel: Tauschen Sie die Elemente zweier String-Slices mit der als Referenz übergebenen Funktion swapStringslice() aus.
Übergabe von Funktionsparametern in Go
In der Go-Sprache können Funktionsparameter als Wert oder als Referenz übergeben werden.
Wertübergabe
Wertübergabe bedeutet, eine Kopie des Parameterwerts an eine Funktion zu übergeben. Dies bedeutet, dass Änderungen an der Kopie des Parameters keinen Einfluss auf den Originalwert haben.
func swap(a, b int) { var tmp = a a = b b = tmp } func main() { x := 10 y := 20 swap(x, y) fmt.Printf("x=%d,y=%d\n", x, y) // x=10,y=20 }
Übergabe per Referenz
Übergabe per Referenz bedeutet, dass eine Referenz auf einen Parameter an eine Funktion übergeben wird. Dies bedeutet, dass sich jede Änderung des Werts, auf den die Parameterreferenz zeigt, auf den ursprünglichen Wert auswirkt.
Um die Referenzübergabe in Go zu implementieren, müssen Sie Zeigertypen als Funktionsparameter verwenden.
func swap(a, b *int) { var tmp = *a *a = *b *b = tmp } func main() { x := 10 y := 20 swap(&x, &y) // 注意此处使用指针 fmt.Printf("x=%d,y=%d\n", x, y) // x=20,y=10 }
Praktischer Fall
Das Folgende ist ein praktischer Fall mit Referenzübergabe:
Implementieren Sie eine swapStringslice()
-Funktion, die die Elemente von zwei String-Slices austauscht.
package main import "fmt" func swapStringslice(a, b *[]string) { var tmp = *a *a = *b *b = tmp } func main() { x := []string{"a", "b", "c"} y := []string{"d", "e", "f"} swapStringslice(&x, &y) fmt.Println(x, y) // [d e f] [a b c] }
Das obige ist der detaillierte Inhalt vonWie werden Golang-Funktionsparameter übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!