Junior — Middle
Quelle est la valeur d'un lien ou d'un pointeur à l'intérieur d'une structure utilisant un slice dans un langage de programmation?
sobes.tech IA
Réponse de l'IA
En Go, une tranche (slice) est une structure qui contient un pointeur vers un tableau, une longueur et une capacité. Lorsqu'une tranche est utilisée à l'intérieur d'une structure, la tranche elle-même est stockée comme une valeur, mais elle contient un pointeur vers les données du tableau.
Cela signifie qu'en copiant la structure, la tranche est également copiée, mais les deux tranches pointeront vers le même tableau de données. Les modifications via une tranche seront reflétées dans l'autre si elles pointent vers le même tableau.
Exemple:
package main
import "fmt"
type MyStruct struct {
Data []int
}
func main() {
s1 := MyStruct{Data: []int{1, 2, 3}}
s2 := s1 // copier la structure
s2.Data[0] = 100
fmt.Println(s1.Data) // Affichera [100 2 3], car Data pointe vers le même tableau
}
Ainsi, la référence à l'intérieur du slice dans la structure pointe vers un tableau commun, ce qui est important à considérer lors de la copie et de la modification des données.