Comprendre la récupération d'un tableau sous-jacent à une tranche dans Go
Dans Go, une tranche est une structure de données flexible qui fournit une abstraction sur un tableau. Lorsque vous travaillez avec des tranches, il peut être nécessaire d'accéder au tableau sous-jacent. Cet article explique les mécanismes derrière ce processus et comment récupérer la référence au nouveau tableau.
Considérons une tranche numSlice dérivée d'un tableau nums tel que présenté dans la question d'origine. Par défaut, numSlice et nums partagent le même tableau sous-jacent. Cependant, ce tableau sous-jacent peut changer lorsque la capacité de la tranche est dépassée lors d'opérations telles que l'ajout d'éléments.
Pour accéder au tableau sous-jacent d'une tranche, une combinaison de réflexion et de risque peut être utilisée. Voici comment :
Utiliser Reflect et Unsafe
Voici un exemple adaptant la documentation Go :
s := []int{1, 2, 3, 4} hdr := (*reflect.SliceHeader)(unsafe.Pointer(&s)) data := *(*[4]int)(unsafe.Pointer(hdr.Data))
Remarque : en raison de l'utilisation de unsafe, il est essentiel de gérer la gestion de la mémoire avec prudence.
Ressources supplémentaires
Pour une compréhension complète des composants internes des tranches, reportez-vous à le billet de blog officiel de Go [ici](https://blog.golang.org/go-slices-usage-and-internals).
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!