Les tranches ou slice sont présentes en Python sous deux formes:
La forme simple à la volée sous forme de fonction
Sous forme objet avec les slices nommés:
Avec 3 attributs et une méthode spécifique
La méthode indices prend une longueur en paramètre et retourne les limites du découpage (utilité limitée)
Les tranches nommées sont utiles pour découper des lignes possédant des champs de taille fixe.
avec par exemple
avec par exemple
code_postal = [1,7)]
nom = [7,27]
etc ..
En golang.
Les tranches s'appuient sur des tableaux ou à défaut embarque un tableau interne.
Leur définition doit comporter: le type des données, la longueur et la capacité.
tranche_a := make([]int, 3, 6)
Avec quelques pièges:
tranche_b := tranche_a[1:3]
Si on modifie tranche_b ou tranche_a, les deux seront modifiés
tranche_b[0] = 42
Ce comportement peut évoluer si on ajoute des éléments par la fonction append. Si la longueur dépasse la capacité , automatique le tableau donnera lieu à un nouveau tableau d'un capacité augmentée.
tranche_b = append(tranche_b, 19)
tranche_b = append(tranche_b, 20)
tranche_b = append(tranche_b, 21)
tranche_b = append(tranche_b, 22)
tranche_b = append(tranche_b, 23)
tranche_b[0] = 99
Dans ce dernier cas tranche_a et tranche_b pointeront vers deux espaces différents.
tranche_a [3 42 0] capacité: 6 taille: 3
tranche_b [99 0 18 19 20 21 22 23] capacité: 10 taille: 8
Pour éviter tout effet de bord:
- Utiliser la fonction copy qui va dès le départ créer deux zones mémoires distinctes.
- Utiliser la forme slice[debut:fin:max] pour éviter les effets de bord d'append.