Maison > développement back-end > Golang > Comment puis-je obtenir de manière générique la taille de n'importe quelle structure de données dans Go ?

Comment puis-je obtenir de manière générique la taille de n'importe quelle structure de données dans Go ?

DDD
Libérer: 2024-11-27 03:07:09
original
830 Les gens l'ont consulté

How Can I Generically Get the Size of Any Data Structure in Go?

Fonction générique pour obtenir la taille de la structure dans Go

Cette question aborde la création d'une fonction générique qui détermine la taille de toute structure de données dans Go, analogue à la fonction sizeof de C. Le développeur a tenté d'y parvenir à l'aide d'interfaces et de réflexion, mais a rencontré des résultats incorrects.

Comprendre le problème

Le code fourni calcule la taille de la structure Reflect.Value plutôt que l'objet stocké dans l'interface T. Ceci est dû à l'utilisation de Reflect.ValueOf(T). Pour résoudre ce problème, il est nécessaire de déterminer la taille du type, et non la valeur, à l'aide de Reflect.TypeOf(T).Size().

Code corrigé :

func getSize(T interface{}) {
    v := reflect.ValueOf(T)
    size := reflect.TypeOf(v).Size()
    fmt.Println(size)
}
Copier après la connexion

Sortie révisée :

Avec cette correction, le code renvoie la taille attendue de 40 pour le donné structure, tenant compte du rembourrage.

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