Vous aspirez à créer une fonction générique dans Go qui imite la fonctionnalité sizeof de C, vous permettant de déterminer la taille de n'importe quel structure des données.
Dans votre code, vous avez tenté d'utiliser des interfaces et la réflexion pour y parvenir. Cependant, vous avez rencontré un problème où la taille renvoyée était incorrecte.
La raison de cette différence réside dans le fait que le code a récupéré la taille de la structure Reflect.Value plutôt que l'objet réel encapsulé dans l'interface.
Heureusement, il existe une solution simple à ce problème. Le type réflexion.Type inclut une méthode Size() qui fournit la taille du type sous-jacent. En utilisant cette méthode, vous pouvez obtenir la taille de la structure de données elle-même :
size := reflect.TypeOf(T).Size()
Dans votre cas spécifique, cette modification donne la taille correcte de 40 octets, qui intègre le remplissage.
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!