Sobes.tech
Middle+

Pourquoi il n'y aura pas de panique sur la ligne test2 := test1[3:] et pourquoi affichera-t-il [4 5] ?

sobes.tech IA

Réponse de l'IA

En Go, les slices (segments) sont conçus de manière à ce que l'expression test1[3:] signifie prendre une tranche à partir de l'indice 3 jusqu'à la fin du slice original test1. Il n'y aura pas de panic si l'indice 3 ne dépasse pas la longueur du slice.

Par exemple, si test1 est un slice de 5 éléments : [1, 2, 3, 4, 5], alors test1[3:] renverra les éléments aux indices 3 et 4, c'est-à-dire [4, 5].

Le panic se produit si l'indice de début de la tranche est supérieur à la longueur du slice, par exemple test1[6:] lorsque la longueur est 5.

Exemple :

package main
import "fmt"

func main() {
    test1 := []int{1, 2, 3, 4, 5}
    test2 := test1[3:] // tranche du 4ème élément jusqu'à la fin
    fmt.Println(test2) // affichera [4 5]
}