Maison > développement back-end > Golang > Les paramètres formels occupent-ils de la mémoire en langage Go ?

Les paramètres formels occupent-ils de la mémoire en langage Go ?

WBOY
Libérer: 2024-04-04 08:27:01
original
1129 Les gens l'ont consulté

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 occupent-ils de la mémoire en langage Go ?

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)
}
Copier après la connexion

Résultat de sortie :

a: 100 (栈)
b: 100 (栈)
slice: 0xc0000a8040 (堆)
slc: 0xc0000a8038 (栈)
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal