Maison >développement back-end >Golang >Comment puis-je déterminer la taille de la mémoire des variables dans Go ?

Comment puis-je déterminer la taille de la mémoire des variables dans Go ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-22 08:38:101011parcourir

How Can I Determine the Memory Size of Variables in Go?

Déverrouiller les secrets de la taille de mémoire variable

Obtenir la taille de mémoire d'une variable est un aspect crucial de la gestion de la mémoire en programmation. Dans Go, la fonction "unsafe.Sizeof" permet de découvrir ces précieuses informations.

Syntaxe :

func Sizeof(x interface{}) uintptr

Utilisation :

Pour déterminer la taille mémoire d'une variable, passez-la simplement en argument à "unsafe.Sizeof". Il renvoie la taille en octets occupés par la valeur de la variable.

import "unsafe"

var i int = 1
fmt.Printf("Size of i: %d bytes", unsafe.Sizeof(i))

Exemple :

Le code suivant montre comment obtenir la taille de la mémoire de diverses données types :

package main

import "fmt"
import "unsafe"

func main() {
    a := int(123)
    b := int64(123)
    c := "foo"
    d := struct {
        FieldA float32
        FieldB string
    }{0, "bar"}

    fmt.Printf("a: %T, %d bytes\n", a, unsafe.Sizeof(a))
    fmt.Printf("b: %T, %d bytes\n", b, unsafe.Sizeof(b))
    fmt.Printf("c: %T, %d bytes\n", c, unsafe.Sizeof(c))
    fmt.Printf("d: %T, %d bytes\n", d, unsafe.Sizeof(d))
}

Sortie :

a: int, 4 bytes
b: int64, 8 bytes
c: string, 3 bytes
d: struct { FieldA float32; FieldB string }, 16 bytes

Remarque :

"unsafe.Sizeof" doit être utilisé avec prudence car cela peut conduire à un comportement indéfini s’il est utilisé incorrectement. Certaines plates-formes peuvent également restreindre son utilisation, à l'instar du package "reflect", qui fournit également une méthode pour obtenir la taille de la mémoire d'une variable via "reflect.TypeOf(variable).Size()".

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!

Déclaration:
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