Avatar ·

Comment supprimer un élément d'un slice en Golang ? Méthodes correctes et pièges

Bonjour à tous ! Je viens de commencer à apprendre Go et j'ai rencontré un problème en travaillant avec les slices. Je dois supprimer un élément par index d'un slice, mais je ne trouve pas de fonction intégrée pour cela. Voici un exemple de mon code : ```go package main import "fmt" func main() { fruits := []string{"apple", "banana", "cherry", "date"} // Je veux supprimer "banana" (index 1) // Comment faire correctement ? fmt.Println(fruits) } ``` J'ai essayé d'assigner nil à l'élément, mais cela ne le supprime pas du slice, cela met seulement la valeur à zéro : ```go fruits[1] = "" // Ne fonctionne pas comme une suppression ``` Ensuite, j'ai essayé de faire une sous-tranche (slice) sans l'élément souhaité, mais cela crée un nouveau slice, tandis que l'original reste : ```go newFruits := append(fruits[:1], fruits[2:]...) // Maintenant fruits = ["apple", "cherry", "date", "date"] — étrange, non ? ``` Le slice original a également changé, et un doublon du dernier élément est apparu ! Pourquoi cela se produit-il ? Comment supprimer correctement un élément d'un slice sans...