En langage Go, les paramètres formels de type valeur n'occuperont pas de mémoire supplémentaire, tandis que les paramètres formels de type référence occuperont la taille du pointeur pointant vers les données réelles dans le tas.
Les paramètres formels du langage Go occupent-ils de la mémoire
En langage Go, les paramètres formels sont des paramètres transmis aux fonctions. Pour les types valeur (int, float, string), les paramètres formels sont stockés dans le cadre de pile de la fonction. Pour les types de référence (tranche, carte, canal), les paramètres formels sont stockés dans le cadre de pile de fonctions sous forme de pointeurs vers les données réelles dans le tas.
Qu'il occupe de la mémoire
Le fait que les paramètres formels occupent de la mémoire dépend du mécanisme de transmission des paramètres. Le langage Go utilise un mécanisme de transmission de valeurs, c'est-à-dire que les paramètres formels sont des copies des paramètres réels. Par conséquent, un paramètre de type valeur ne nécessite aucune mémoire supplémentaire, alors qu’un paramètre de type référence occupe la taille d’un pointeur vers les données réelles dans le tas.
Cas pratique :
Le code suivant démontre l'utilisation de la mémoire des paramètres formels de type valeur et de type référence :
package main import "fmt" func main() { // 值类型 var a int = 100 b := a // 赋值,b 是 a 的副本 // 引用类型 slice := []int{1, 2, 3} slc := slice // 赋值,slc 是 slice 的指针副本 fmt.Printf("a: %d (栈)\n", a) fmt.Printf("b: %d (栈)\n", b) fmt.Printf("slice: %p (堆)\n", &slice) fmt.Printf("slc: %p (栈)\n", &slc) }
Résultat de sortie :
a: 100 (栈) b: 100 (栈) slice: 0xc0000a8040 (堆) slc: 0xc0000a8038 (栈)
Comme le montre le résultat de sortie, le paramètre formel de type valeur b est stocké dans la pile, occupant 4 octets de mémoire. Le paramètre de type référence slc est également stocké sur la pile, occupe 8 octets de mémoire et constitue un pointeur vers les données réelles du tas.
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!