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
Mary-Kate Olsenoriginal
2024-12-20 10:04:11839parcourir

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
}

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
}

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!

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