Junior — Middle
Quelles actions sont autorisées lors de l'utilisation d'une tranche en Go si elle n'a pas été explicitement initialisée?
sobes.tech IA
Réponse de l'IA
En Go, si une tranche (slice) n'a pas été explicitement initialisée (c'est-à-dire qu'elle a la valeur nil), on peut effectuer les actions suivantes :
- Vérifier si elle est
nil(par exemple,if slice == nil), ce qui est utile pour déterminer si la tranche a été initialisée. - Obtenir la longueur et la capacité avec
len(slice)etcap(slice). Pour une tranchenil, la longueur et la capacité sont 0. - Utiliser l'opérateur
appendpour ajouter des éléments. Cela créera automatiquement une nouvelle tranche avec de la mémoire allouée si la tranche d'origine estnil.
Cependant, on ne peut pas accéder aux éléments de la tranche par index si elle est nil ou vide, car cela provoquerait une panique.
Exemple :
var s []int // s == nil
fmt.Println(s == nil) // true
fmt.Println(len(s)) // 0
s = append(s, 1) // maintenant s est initialisé et contient [1]