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) }
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!