Dans Go, les tranches sont des références aux tableaux sous-jacents, et leurs en-têtes contiennent des informations essentielles sur la tranche. Bien que le contenu d'un argument slice puisse être modifié par une fonction, son en-tête ne le peut pas. Pour inspecter l'en-tête d'une tranche, nous pouvons approfondir les détails cachés dans sa structure.
L'en-tête de la tranche est défini par le type reflex.SliceHeader, qui comprend trois champs : Data, Len et Cap. Nous pouvons convertir un pointeur de tranche en *reflect.SliceHeader en utilisant le package unsafe :
sh := (*reflect.SliceHeader)(unsafe.Pointer(&newSlice2))
Une fois que nous avons l'en-tête de tranche, nous pouvons accéder directement à ses champs :
En imprimant la valeur SliceHeader à l'aide de fmt.Printf(% v, sh), nous obtenons le résultat suivant :
&{Data:1792106 Len:8 Cap:246}
Cela nous indique que newSlice2 pointe vers les données stockées à l'adresse mémoire 1792106, a un longueur de 8 et a une capacité de 246.
Pour conclure, même si l'en-tête d'une tranche ne peut pas être modifié directement, nous pouvons inspecter son contenu en utilisant des techniques comme la conversion en réflexion.SliceHeader ou en utilisant des méthodes indirectes comme & ;newSlice2[0] ou len(newSlice2) pour récupérer des champs spécifiques.
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!