Sobes.tech
Junior

Quelle est la différence clé entre slices et tableaux en Go?

sobes.tech IA

Réponse de l'IA

Les slices sont des vues modifiables des tableaux.

Caractéristique Tableau (Array) Slice
Taille Fixe, déterminée lors de la création Dynamique, peut changer
Type [n]T (où n est la taille, T le type) []T (où T est le type)
Passage en fonction Par valeur (copie) Par référence à l'array sous-jacent, on passe head, len et cap (en fait, une nouvelle structure SliceHeader avec des copies de ces champs)
Création var a [5]int ou b := [3]string{"a", "b", "c"} var s []int ou t := []int{1, 2, 3} ou u := make([]int, 5)
Performance Plus prévisible grâce à la taille fixe, peut être meilleur pour de petites tailles Peut avoir des coûts supplémentaires lors du changement de taille (réallocation de l'array sous-jacent)
// Exemple de tableau
var arr [3]int = [3]int{1, 2, 3}

// Exemple avec slice créé à partir du tableau
slice := arr[1:] // slice {2, 3}

// Exemple de création de slice
s := []int{10, 20, 30} // array sous-jacent {10, 20, 30}, len = 3, cap = 3

// Modification du slice
s = append(s, 40) // maintenant s {10, 20, 30, 40}. Si la capacité est insuffisante, un nouveau array sous-jacent est créé, len = 4, cap = 6 (habituellement doublant la capacité).

// Modifier un élément du slice modifie l'array sous-jacent
slice[0] = 99 // arr devient {1, 99, 3}
fmt.Println(arr)