Maison > développement back-end > Golang > Comment calculer la taille d'une structure Go ?

Comment calculer la taille d'une structure Go ?

DDD
Libérer: 2024-12-22 02:26:12
original
683 Les gens l'ont consulté

How to Calculate the Size of a Go Struct?

Comment déterminer la taille d'une structure dans Go

Le package unsafe de Go fournit une méthode Sizeof qui renvoie la taille d'une valeur en octets . Par exemple, pour déterminer la taille de la structure Coord3d définie ci-dessous, vous pouvez utiliser le code suivant :

import "unsafe"

type Coord3d struct {
    X, Y, Z int64
}

func main() {
    fmt.Println(unsafe.Sizeof(Coord3d{}))
}
Copier après la connexion

Cependant, il est important de noter que la taille d'une structure n'inclut pas la mémoire référencée par sa champs. Par exemple, si une structure contient une tranche, la méthode Sizeof renverra la taille du descripteur de tranche, et non la taille de la mémoire référencée par la tranche.

Calcul manuel de la taille de la structure

En plus d'utiliser la méthode Sizeof, vous pouvez également calculer manuellement la taille d'une structure en suivant ces instructions. règles :

  • La taille d'une structure dépend des types de ses champs et de leur ordre. Deux structures avec les mêmes champs peuvent avoir des tailles différentes en raison d'exigences de remplissage différentes.
  • L'alignement d'un champ est déterminé par son type. Par exemple, int64 a un alignement de 8 octets, tandis que bool a un alignement de 1 octet.
  • Le remplissage est l'espace ajouté à la fin d'un champ pour l'aligner sur son alignement requis. Il garantit que la structure est alignée sur son plus grand champ.

Sur la base de ces règles, vous pouvez calculer la taille de n'importe quelle structure en additionnant les tailles de ses champs et en ajoutant tout remplissage nécessaire. Par exemple, la structure Coord3d comporte trois champs int64, chacun ayant un alignement de 8 octets. Par conséquent, la taille de la structure Coord3d est de 24 octets. Vous pouvez vérifier vos calculs en utilisant un service comme gostructsize.appspot.com.

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 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