Maison >développement back-end >Golang >Quel est le lien entre les tranches Go et leurs tableaux sous-jacents ?
Comprendre les tranches et leurs tableaux sous-jacents dans Go
Dans Go, une tranche représente un segment contigu d'un tableau sous-jacent. Le découpage d'un tableau crée une nouvelle tranche qui fait référence au même tableau sous-jacent que l'original, mais avec sa propre longueur et sa propre capacité.
Considérez l'exemple suivant où une tranche est créée à partir d'un tableau :
nums := [3]int{1, 2, 3} numSlice := nums[:2]
Dans ce cas, la tranche numSlice contient les deux premiers éléments du tableau nums. Cependant, la tranche numSlice et le tableau d'origine nums pointent vers le même tableau sous-jacent en mémoire.
L'ajout d'éléments à la tranche modifie le tableau sous-jacent. Cependant, si la limite de capacité de la tranche est atteinte, le tableau sous-jacent doit être redimensionné pour accueillir les éléments supplémentaires.
Pour accéder au tableau sous-jacent d'une tranche, vous pouvez utiliser les packages reflex et unsafe dans Go. Le type reflex.SliceHeader donne accès au pointeur du tableau sous-jacent.
s := []int{1, 2, 3, 4} hdr := (*reflect.SliceHeader)(unsafe.Pointer(&s)) data := *(*[4]int)(unsafe.Pointer(hdr.Data))
Ce code récupère le tableau sous-jacent sous forme de pointeur vers un tableau typé (*[4]int), permettant de modifier le tableau directement.
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!