Le passage des paramètres de la fonction GoLang adopte le mécanisme de passage par valeur. La modification des paramètres de type valeur n'affecte pas les paramètres réels, tandis que la modification des paramètres de type référence affectera les paramètres de pointeur réels permettant un accès indirect et une modification des paramètres réels ; paramètres.
Transmission de paramètres dans les fonctions GoLang
Introduction
Dans GoLang, la transmission de paramètres suit le mécanisme de transmission par valeur. Cela signifie que toute modification apportée aux paramètres à l’intérieur de la fonction n’affectera pas les paramètres réels en dehors de la fonction.
Type de paramètre
Les paramètres de la fonction GoLang peuvent être des types valeur ou des types référence.
Type de valeur
Pour les paramètres de type valeur, toute modification des paramètres à l'intérieur de la fonction n'affectera pas les paramètres réels. En effet, lors d'un appel de fonction, une copie des paramètres est créée.
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 }
Type de référence
Pour les paramètres de type référence, les modifications apportées aux paramètres à l'intérieur de la fonction affecteront les paramètres réels. En effet, la fonction opère directement sur les données réelles.
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
Les types de pointeurs fournissent un mécanisme d'accès indirect aux valeurs. Lors du passage d'un type référence via un pointeur, les paramètres réels peuvent être modifiés.
func swap(a, b *int) { *a, *b = *b, *a // 交换指针指向的值 } func main() { x := 5 y := 7 swap(&x, &y) fmt.Println(x, y) // 输出 7 5 }
Cas pratique
Ce qui suit est un cas pratique utilisant le passage de paramètres de fonction :
type Book struct {
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!