Maison > Article > développement back-end > Paramètre de la fonction Golang passant la gestion de la mémoire
Dans le passage des paramètres de fonction, les paramètres de type valeur sont transmis par valeur, créant une copie sans affecter la valeur d'origine ; les paramètres de type référence sont transmis par référence, la modification affectera la valeur d'origine et sont utilisés pour modifier des structures de données complexes.
Gestion de la mémoire des paramètres de fonction passant dans Go
En Go, les paramètres de fonction peuvent être passés par valeur ou par référence. Le passage par valeur crée une nouvelle copie de la variable paramètre, tandis que le passage par référence transmet une référence à la variable d'origine.
Value Passing
Lorsqu'un paramètre d'un type valeur (tel que int, float, string, etc.) est passé par valeur, une copie de la valeur est créée et transmise à la fonction. Cela signifie que toute modification apportée aux paramètres à l'intérieur de la fonction n'affectera pas les valeurs d'origine en dehors de la fonction.
Syntaxe :
func f(x int) { // x is copy of the passed argument }
Exemple :
package main import "fmt" func main() { x := 10 f(x) // Value passed fmt.Println(x) // Prints 10 } func f(x int) { x += 10 }
Passage par référence
Lorsqu'un paramètre d'un type référence (tel qu'un pointeur, une tranche, une carte, etc.) est passé par référence, une référence à la variable d'origine est transmise. Cela signifie que toute modification apportée aux paramètres à l'intérieur de la fonction affectera les valeurs d'origine en dehors de la fonction.
Syntaxe :
func f(x *int) { // x is a pointer to the passed arg }
Exemple :
package main import "fmt" func main() { x := 10 f(&x) // Reference passed fmt.Println(x) // Prints 20 } func f(x *int) { *x += 10 }
Cas pratique
Vous pouvez utiliser le passage de références pour modifier des structures de données complexes (telles que le découpage, le mappage, etc.) transmises à la fonction. Par exemple, le code suivant crée une tranche, puis la transmet à une fonction pour la trier :
package main import "fmt" import "sort" func main() { arr := []int{5, 2, 8, 3, 1} sortSlice(&arr) // Reference passed fmt.Println(arr) // Prints [1 2 3 5 8] } func sortSlice(arr *[]int) { sort.Ints(*arr) }
Conclusion
Comprendre comment les arguments de fonction sont transmis dans Go est crucial pour gérer efficacement la mémoire et éviter les comportements inattendus. En choisissant la bonne méthode de livraison, les développeurs peuvent optimiser les performances et augmenter la robustesse de leurs programmes.
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!