Maison  >  Article  >  développement back-end  >  Pourquoi slices.Delete() dans Golang copie-t-il l'élément suivant ?

Pourquoi slices.Delete() dans Golang copie-t-il l'élément suivant ?

PHPz
PHPzavant
2024-02-14 10:00:091237parcourir

Pourquoi slices.Delete() dans Golang copie-t-il lélément suivant ?

L'éditeur PHP Zimo discutera d'une question sur la fonction slices.Delete() dans Golang dans cet article : Pourquoi copie-t-il l'élément suivant ? Les tranches dans Golang sont une structure de données puissante, mais la fonction slices.Delete() présente un comportement étrange lors de la suppression d'éléments. Nous analyserons ce phénomène et donnerons des explications et causes possibles. En approfondissant ce problème, nous pouvons mieux comprendre le fonctionnement interne et les idées de conception du découpage dans Golang. Après avoir lu cet article, vous serez plus familier avec les opérations de découpage de Golang, améliorant ainsi l'efficacité de la programmation et la qualité du code.

Contenu de la question

Exemple de code :

func main() {
    bar := []string{"Monday", "Tuesday", "Wednesday"}
    slices.Delete(bar, 0, 1) // I want to delete 'Monday'
    fmt.Println(bar)         // prints [Tuesday Wednesday Wednesday]
}

Je ne comprends pas pourquoi j’ai reçu un « mercredi ». Je m'attends à une tranche à deux éléments.

Workaround

slices.delete Renvoie la tranche modifiée. Vous devriez l'utiliser comme :

bar=slices.Delete(bar, 0, 1)

En effet, l'opération de suppression déplace les éléments dans la tranche puis renvoie une tranche plus courte, mais la tranche d'origine bar reste inchangée.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer