Maison >développement back-end >Golang >Comment les paramètres de la fonction Golang sont-ils transmis ?
Il existe deux manières de transmettre des paramètres de fonction : la transmission de valeurs et la transmission de références. Le passage par valeur copie une copie de la valeur du paramètre et les modifications apportées à la copie n'affectent pas la valeur d'origine. Le passage par référence transmet une référence à la valeur du paramètre et les modifications apportées à la valeur pointée par la référence affecteront la valeur d'origine. Exemple pratique : échangez les éléments de deux tranches de chaîne à l'aide de la fonction swapStringslice() passée par référence.
Passage des paramètres de fonction en Go
Dans le langage Go, les paramètres de fonction peuvent être passés par valeur ou par référence.
Passage par valeur
Passage par valeur signifie passer une copie de la valeur du paramètre à une fonction. Cela signifie que toute modification apportée à la copie du paramètre n'affectera pas la valeur d'origine.
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 }
Pass by reference
Pass by référence signifie passer une référence à un paramètre à une fonction. Cela signifie que toute modification de la valeur pointée par la référence du paramètre affecte la valeur d'origine.
Pour implémenter le passage de références dans Go, vous devez utiliser des types de pointeurs comme paramètres de fonction.
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 }
Cas pratique
Ce qui suit est un cas pratique utilisant le passage par référence :
Implémentez une swapStringslice()
fonction qui échange les éléments de deux tranches de chaîne.
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] }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!