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

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

Mary-Kate Olsen
Libérer: 2024-12-20 10:04:11
original
891 Les gens l'ont consulté

How Do I Determine the Size of a Go Struct?

Détermination de la taille d'une structure Go

Dans Go, déterminer la taille d'une structure est un aspect crucial de la gestion et de l'optimisation de la mémoire. Ces connaissances permettent aux développeurs d'optimiser l'utilisation de la mémoire de leur code et d'améliorer ses performances.

Approche programmatique

Go fournit une méthode pratique pour obtenir dynamiquement la taille d'une structure. À l'aide du package non sécurisé, la fonction Sizeof peut être utilisée :

package main

import "unsafe"

type Coord3d struct {
    X, Y, Z int64
}

func main() {
    var point Coord3d
    size := unsafe.Sizeof(point)
    println(size) // Output: 24
}
Copier après la connexion

Calcul alternatif

Au lieu de s'appuyer uniquement sur la fonction Sizeof, les programmeurs peuvent calculer manuellement la taille d'une structure basée sur la taille de ses champs individuels. Go suit des principes d'alignement et des règles de remplissage stricts, donc connaître ces règles aide à déterminer avec précision la taille de la structure.

Tailles des types de données

  • bool : 1 octet
  • int8/uint8 : 1 octet
  • int16/uint16 : 2 octets
  • int32/uint32/float32 : 4 octets
  • int64/uint64/float64/pointer : 8 octets
  • chaîne : 16 octets (alignement de 8 octets)
  • tranches : 24 octets (alignement des 8 octets)
  • tableaux : longueur * taille du type d'élément

Remplissage et alignement

Le remplissage est l'ajout d'octets de remplissage pour aligner champs sur des limites prédéfinies (1, 2, 4 ou 8 octets). Par exemple, si un champ fait 1 octet de long et que l'alignement est de 4 octets, 3 octets de remplissage seront ajoutés pour garantir un alignement correct.

Exemple pratique

Considérez la structure suivante :

type MyStruct struct {
    a bool
    b string
    c bool
}
Copier après la connexion

calculer son taille :

  • a : 1 octet
  • b : 16 octets (alignement de 8 octets)
  • c : 1 octet

Taille totale : 18 octets (alignement de 1 octet)

Armé de ces principes, les programmeurs peuvent déterminer efficacement la taille de n'importe quelle structure Go et optimiser leur code en conséquence. De plus, il existe des services utiles qui facilitent le processus de vérification des tailles calculées, garantissant l'exactitude et l'efficacité du code.

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!

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal